Форум сайта python.su
Что линуксу хорошо, как говорится… Пытаюсь собрать одну программку под винду с помощью py2exe. Проблема в том, что там парсятся файлы на русском языке, естественно, повсеместно юникод. Но вот под линуксом программа работает отлично, а под виндой:
Traceback (most recent call last):Так чего это ошибка? lxml? если да, то как ее обойти? Файл, который парсится - xml с русскими символами, но все в utf-8. lxml последней версии - 2.2.2
File “forms\MainForm.pyc”, line 138, in loadPrice
File “modules\yandex.pyc”, line 34, in load_urls
File “lxml.etree.pyx”, line 2698, in lxml.etree.parse (src/lxml/lxml.etree.c:49590)
File “parser.pxi”, line 1491, in lxml.etree._parseDocument (src/lxml/lxml.etree.c:71205)
File “parser.pxi”, line 1520, in lxml.etree._parseDocumentFromURL (src/lxml/lxml.etree.c:71488)
File “parser.pxi”, line 1420, in lxml.etree._parseDocFromFile (src/lxml/lxml.etree.c:70583)
File “parser.pxi”, line 975, in lxml.etree._BaseParser._parseDocFromFile (src/lxml/lxml.etree.c:67736)
File “parser.pxi”, line 539, in lxml.etree._ParserContext._handleParseResultDoc (src/lxml/lxml.etree.c:63820)
File “parser.pxi”, line 625, in lxml.etree._handleParseResult (src/lxml/lxml.etree.c:64741)
File “parser.pxi”, line 559, in lxml.etree._raiseParseError (src/lxml/lxml.etree.c:64023)
UnicodeDecodeError: ‘ascii’ codec can't decode byte 0xd0 in position 37: ordinal not in range(128)
Отредактировано (Окт. 22, 2009 19:51:40)
Офлайн
попробуйте добавить в опции py2exe пакет encodings, что-то типа
setup(windows=['main.py'],
options={
'py2exe':{
'packages': ["encodings"],
...
}
},
)
Офлайн
PooH
АПД: вру, не помогло. Та же ошибка.
Отредактировано (Окт. 22, 2009 20:24:00)
Офлайн
EnchantnerА без py2exe программа на винде работает?
PooH
АПД: вру, не помогло. Та же ошибка.
Офлайн
У меня была подобная проблема. Решилась так:
import sys
if hasattr(sys, "frozen"):
sys.setdefaultencoding('cp1251')
Отредактировано (Окт. 23, 2009 06:27:43)
Офлайн
PooH
Работает, причем без ошибок
hellslade
спасибо большое, помогло!
Еще небольшой вопрос, как при сборке py2exe указывать иконку для получающегося экзешника? Если это можно. Потому что с помощью редактора ресурсов это делать как-то не хочется.
АПД: вроде тоже нашел, попробую. Кому интересно - http://stackoverflow.com/questions/525329/embedding-icon-in-exe-with-py2exe-visible-in-vista
Отредактировано (Окт. 23, 2009 09:17:44)
Офлайн