Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 22, 2007 15:21:05

proDiva
От:
Зарегистрирован: 2007-02-15
Сообщения: 244
Репутация: +  0  -
Профиль   Отправить e-mail  

Использование py2exe: заморочки и лазейки!

Метод подложки unicows.dll в каталог exe-шника сработал! Всем огромное спасибо, проблема с вин98 решена! Где пометить, что тема закрыта? ;)



Офлайн

#2 Фев. 22, 2007 15:24:53

bialix
От:
Зарегистрирован: 2006-07-13
Сообщения: 774
Репутация: +  1  -
Профиль   Отправить e-mail  

Использование py2exe: заморочки и лазейки!

OlDer
bialix
Те операции в питоне. которые используют unicode (например, в модуле os), не работают нормально на 98, потому что сам питон не использует unicows.dll ни в какой форме.
Интересно. Не знал. А есть где почитать об этом? Я что-то не нашел нигде информации об этом. На http://www.python.org/download/windows/ и win95 и 98 есть в списке поддерживаемых платформ, и нигде не написано об каких-либо ограничениях.
Я тоже о многом не знал, пока не начал делать порт bzr на win98. Кое-что юникодовое работает, кое-что нет.
Хуже всего, что не работает получение списка файлов в каталоге в виде unicode, т.е. os.listdir(u'.') на 98й дает все равно имена в ANSI кодировке. Я думаю из-за этого shutil.rmtree(u'dir') падает с ошибками если в дереве файлов есть не-ascii.

Вобщем скачал я себе исходники питона, читаю их, чтобы понять где и как. Поддержка unicode чаще всего просто зарубана проверкой номера версии винды. Если винда 98, то никаких попыток использовать unicows.dll даже не предполагается. Поиском в инете нашел старую дискуссию в comp.lang.python про эту либу и про то, что ее лицензия не позволяет ее распространять в составе дистрибутива питона, потому что у питона слишком свободная лицензия.

Пока что думаю, что делать с os.listdir(u'.').

Конечно, если не юзать доступ к файловой системе через unicode то наверное почти все будет работать.
Однако для bzr это неприемлемо.



Офлайн

#3 Фев. 22, 2007 17:01:49

Mkdir
Зарегистрирован: 2006-06-30
Сообщения: 211
Репутация: +  0  -
Профиль   Отправить e-mail  

Использование py2exe: заморочки и лазейки!

proDiva
Метод подложки unicows.dll в каталог exe-шника сработал! Всем огромное спасибо, проблема с вин98 решена!
Классно! Поздравляю.
Я тут с интересом наблюдал за развитием темы ;)
Рад что все закончилось благополучно.



Офлайн

#4 Фев. 22, 2007 18:41:15

bialix
От:
Зарегистрирован: 2006-07-13
Сообщения: 774
Репутация: +  1  -
Профиль   Отправить e-mail  

Использование py2exe: заморочки и лазейки!

proDiva
Метод подложки unicows.dll в каталог exe-шника сработал! Всем огромное спасибо, проблема с вин98 решена! Где пометить, что тема закрыта? ;)
Уже пометили. Хорошо бы это дело пометить в wiki проекта py2exe в подразделе, посвященном wxPython.



Офлайн

#5 Фев. 22, 2007 20:32:54

OlDer
От:
Зарегистрирован: 2006-07-19
Сообщения: 133
Репутация: +  0  -
Профиль   Отправить e-mail  

Использование py2exe: заморочки и лазейки!

bialix
Я тоже о многом не знал, пока не начал делать порт bzr на win98. Кое-что юникодовое работает, кое-что нет.
Хуже всего, что не работает получение списка файлов в каталоге в виде unicode, т.е. os.listdir(u'.') на 98й дает все равно имена в ANSI кодировке. Я думаю из-за этого shutil.rmtree(u'dir') падает с ошибками если в дереве файлов есть не-ascii.
Тут, опять же unicows не при чем. На 98 и NT-подобных разные кодировки имен файлов. Нужно использовать sys.getfilesystemencoding( )



Офлайн

#6 Фев. 22, 2007 20:40:05

bialix
От:
Зарегистрирован: 2006-07-13
Сообщения: 774
Репутация: +  1  -
Профиль   Отправить e-mail  

Использование py2exe: заморочки и лазейки!

OlDer
bialix
Я тоже о многом не знал, пока не начал делать порт bzr на win98. Кое-что юникодовое работает, кое-что нет.
Хуже всего, что не работает получение списка файлов в каталоге в виде unicode, т.е. os.listdir(u'.') на 98й дает все равно имена в ANSI кодировке. Я думаю из-за этого shutil.rmtree(u'dir') падает с ошибками если в дереве файлов есть не-ascii.
Тут, опять же unicows не при чем. На 98 и NT-подобных разные кодировки имен файлов. Нужно использовать sys.getfilesystemencoding( )
Не-а. Причем, еще как причем.
Я могу создать директорию или файл с юникодным именем. И в этом мне ничего не помешает.
А вот чтобы получить содержимое директории я могу использовать либо ANSI функци, либо Unicode.
Так вот в исходниках питона использование юникодного апи по большей части отключено простой проверкой номера версии винды в рантайм.



Отредактировано (Фев. 22, 2007 20:40:47)

Офлайн

#7 Фев. 22, 2007 21:05:28

bialix
От:
Зарегистрирован: 2006-07-13
Сообщения: 774
Репутация: +  1  -
Профиль   Отправить e-mail  

Использование py2exe: заморочки и лазейки!

OlDer
Тут, опять же unicows не при чем. На 98 и NT-подобных разные кодировки имен файлов. Нужно использовать sys.getfilesystemencoding( )
Завтра проверю на живой win98. А вот что я вижу в исходниках:

#if defined(MS_WINDOWS) && defined(HAVE_USABLE_WCHAR_T)
const char *Py_FileSystemDefaultEncoding = “mbcs”;

именно эта константа возвращается функцией sys.getfilesystemencoding().



Офлайн

#8 Фев. 23, 2007 10:05:35

bialix
От:
Зарегистрирован: 2006-07-13
Сообщения: 774
Репутация: +  1  -
Профиль   Отправить e-mail  

Использование py2exe: заморочки и лазейки!

bialix
OlDer
Тут, опять же unicows не при чем. На 98 и NT-подобных разные кодировки имен файлов. Нужно использовать sys.getfilesystemencoding( )
Завтра проверю на живой win98. А вот что я вижу в исходниках:

#if defined(MS_WINDOWS) && defined(HAVE_USABLE_WCHAR_T)
const char *Py_FileSystemDefaultEncoding = “mbcs”;

именно эта константа возвращается функцией sys.getfilesystemencoding().
Проверил. Действительно возвращает mbcs.



Офлайн

#9 Фев. 23, 2007 12:27:23

balu
От:
Зарегистрирован: 2006-05-24
Сообщения: 521
Репутация: +  0  -
Профиль   Отправить e-mail  

Использование py2exe: заморочки и лазейки!

proDiva
Если бы я была ГУРУ в питоне, я бы так и сделала))) но увы… Чайник - мое второе имя)))
Ну и? мЫ все чего-то не знаем. Значит надо стараться не біть чайниками ;) Знаешь какой-нибудь компилируемый язык или может знакома с бесплатными инсталяторами? Просто устанавливай последовательно питошу, и что там тебе дальше надо с родных инсталяторов. Хотя под тем же линухом все это на много проще…



Офлайн

#10 Фев. 23, 2007 13:40:28

OlDer
От:
Зарегистрирован: 2006-07-19
Сообщения: 133
Репутация: +  0  -
Профиль   Отправить e-mail  

Использование py2exe: заморочки и лазейки!

bialix
Проверил. Действительно возвращает mbcs.
На всякий случай, если кто еще не видел - вот здесь коротко изложено как в python работать с unicode.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version