Найти - Пользователи
Полная версия: PyQt4: настольная игрушка (попробуйте скрипт)
Начало » GUI » PyQt4: настольная игрушка (попробуйте скрипт)
1 2 3 4 5
The gray Cardinal
igor.kaist
Спасибо.

По поводу оптимизации размера. В папку dist тупо включается:
QtGui4.dll — 10 436 608 байт;
QtCore4.dll — 2 660 864 байт;
PyQt4.QtGui.pyd — 6 218 240 байт;
PyQt4.QtCore.pyd — 1 563 136 байт.
И что с ними делать?

По поводу путей не пойму. Я везде использую только абсолютные пути :/.
self.home = os.path.realpath(os.path.dirname(sys.argv[0])) # каталог скрипта
self.home = unicode(self.home, locale.getpreferredencoding())
self.home = self.home.replace('\\', '/')
igor.kaist
Как раз абсолютные пути для этого вредны, так как если твою программу запустят с ярлыка, то рабочим каталогом станет каталог, где распологается ярлык. В моем примере, выясняется, где лежит python.dll (В котором и находится модуль os) и меняется рабочий каталог с программой.
По поподу dll, я в другом топике отписался… хм… Передо мной QtGui4.dll (версия файла 4.4.2, 3.36 мб) и QtCore4.dll (версия файла 4.4.2, 883 кб). Откуда такая разница в размерах, не знаю.

Добавлено
Попробуй эти, про готорые говорю, возможно подойдут
The gray Cardinal
igor.kaist
Как раз абсолютные пути для этого вредны, так как если твою программу запустят с ярлыка, то рабочим каталогом станет каталог, где распологается ярлык. В моем примере, выясняется, где лежит python.dll (В котором и находится модуль os) и меняется рабочий каталог с программой.
Ничего не понял. Мне нужен каталог самого скрипта, т.к. всё остальное пляшет от него. Я не верно его нахожу (код выше)?
Кроме того, в процессе “отладки” уже готового exe я вижу, что каталог-то абсолютно верный (я просто вписал в код выдачу сообщений во всплывающих окошках перед компиляцией).
The gray Cardinal
igor.kaist
Откуда такая разница в размерах, не знаю.
У меня версии этих Dll — 4.4.1.0.
Видимо, размеры непобедимы…
igor.kaist
Хм…. А в трейсбек ничего не попадает?
P.S. Глянь на мой пост выше, добавил ссылку на те кутишные библиотеки.

P.S. Не успеваю писать и редактировать свои посты :)
The gray Cardinal
igor.kaist
Хм…. А в трейсбек ничего не попадает?
P.S. Глянь на мой пост выше, добавил ссылку на те кутишные библиотеки.
В выводе при компиляции ничего подозрительного не вижу.
Библиотеки взял, спасибо. Только пока не решу вопрос с путями, они бесполезны — сейчас у меня ничего не запускается просто (хотя, на импорт не ругается, так что есть надежда, что библиотеки то что надо).
igor.kaist
The gray Cardinal
В выводе при компиляции ничего подозрительного не вижу.
Да ты дебаг вывод в процессе работы сделай, при компиляции то ничего не покажет.
По поводу dll, у меня подозрение, что они как то сжаты просто, так как в архиве 7z они практически не уменьшаются в размере.
igor.kaist
Все, дошло до меня… Забыл про существование upx… Сжал python.dll с 2,1 мб до 888 кб, все работает…
igor.kaist
Эврика!!!! :)
upx'ом сжимаются exe, dll, pyd… Практически hello world на python+Tkinter+Ttk в распакованном виде 2.7 метров, в 7z 1.9 метров.
The gray Cardinal
igor.kaist
Да ты дебаг вывод в процессе работы сделай, при компиляции то ничего не покажет.
Traceback (most recent call last):
File “milfoil.py”, line 502, in new_game_36
File “milfoil.py”, line 399, in new_game
File “milfoil.py”, line 372, in createCardItem
ZeroDivisionError: float division
Я это уже озвучивал выше: деление на ноль только из-за того, что не нашлась картинка.
igor.kaist
По поводу dll, у меня подозрение, что они как то сжаты просто, так как в архиве 7z они практически не уменьшаются в размере.
В общем-то всё понятно, достаточно посмотреть на размер виндового дистриба PyQt4 для 2.5 и для 2.6 (у меня 2.5) и всё встаёт на свои места :).
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB