Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 22, 2009 19:01:55

Enchantner
От:
Зарегистрирован: 2009-02-11
Сообщения: 442
Репутация: +  0  -
Профиль   Отправить e-mail  

Война со сборкой под винду

Что линуксу хорошо, как говорится… Пытаюсь собрать одну программку под винду с помощью py2exe. Проблема в том, что там парсятся файлы на русском языке, естественно, повсеместно юникод. Но вот под линуксом программа работает отлично, а под виндой:

Traceback (most recent call last):
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)
Так чего это ошибка? lxml? если да, то как ее обойти? Файл, который парсится - xml с русскими символами, но все в utf-8. lxml последней версии - 2.2.2



Отредактировано (Окт. 22, 2009 19:51:40)

Офлайн

#2 Окт. 22, 2009 20:05:13

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Война со сборкой под винду

попробуйте добавить в опции py2exe пакет encodings, что-то типа

setup(windows=['main.py'],
options={
'py2exe':{
'packages': ["encodings"],
...
}
},
)



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#3 Окт. 22, 2009 20:11:23

Enchantner
От:
Зарегистрирован: 2009-02-11
Сообщения: 442
Репутация: +  0  -
Профиль   Отправить e-mail  

Война со сборкой под винду

PooH
АПД: вру, не помогло. Та же ошибка.



Отредактировано (Окт. 22, 2009 20:24:00)

Офлайн

#4 Окт. 23, 2009 05:24:35

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Война со сборкой под винду

Enchantner
PooH
АПД: вру, не помогло. Та же ошибка.
А без py2exe программа на винде работает?



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#5 Окт. 23, 2009 06:26:12

hellslade
От:
Зарегистрирован: 2008-01-28
Сообщения: 240
Репутация: +  0  -
Профиль   Отправить e-mail  

Война со сборкой под винду

У меня была подобная проблема. Решилась так:

import sys
if hasattr(sys, "frozen"):
sys.setdefaultencoding('cp1251')



Отредактировано (Окт. 23, 2009 06:27:43)

Офлайн

#6 Окт. 23, 2009 08:53:34

Enchantner
От:
Зарегистрирован: 2009-02-11
Сообщения: 442
Репутация: +  0  -
Профиль   Отправить e-mail  

Война со сборкой под винду

PooH
Работает, причем без ошибок
hellslade
спасибо большое, помогло!

Еще небольшой вопрос, как при сборке py2exe указывать иконку для получающегося экзешника? Если это можно. Потому что с помощью редактора ресурсов это делать как-то не хочется.

АПД: вроде тоже нашел, попробую. Кому интересно - http://stackoverflow.com/questions/525329/embedding-icon-in-exe-with-py2exe-visible-in-vista



Отредактировано (Окт. 23, 2009 09:17:44)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version