Решения для замораживания приложения pyqt4 в Windows? - PullRequest
0 голосов
/ 05 марта 2011

Есть ли работоспособный и проверенный способ заморозить приложение pyqt4 в windows? Я слышал, что есть некоторые проблемы для py2exe.

1 Ответ

4 голосов
/ 06 марта 2011

Я использовал py2exe для проекта PyQt4 на работе, но в итоге переключился на PyInstaller .

py2exe работал отлично по большей части. Я помню, как вручную указывал включить библиотеки sip в мой файл setup.py вместе с некоторыми другими, в зависимости от программы. По-моему, PyInstaller справляется с этим лучше, хотя я часто удаляю DLL-файлы из папки qt4_plugins окончательных папок, которые он решил включить, которые мне на самом деле не нужны. Например, qt4_plugins \ imageformats \ qjpeg4.dll, когда я вообще не использую файлы JPEG. Это никак не мешает замороженному приложению, оно просто увеличивает размер файла.

Руководство для PyInstaller также довольно хорошо, и с его разделом «Приступая к работе» вы сможете быстро настроить все. Это так же просто, как создание .spec-файла для проекта, который генерируется автоматически, но также является обычным файлом Python, так что у вас есть возможность настроить его или добавить дополнительные задачи, такие как подписывание кода или создание программы setup.exe с помощью NSIS. .

В моем пути есть пакетный файл Windows с именем pybuild.bat, содержимое которого состоит из:

python -O c:\python27\pyinstaller-1.5\build.py "%~f1"

чтобы я мог легко построить проект из командной строки, запустив pybuild projectname.spec в файле .spec проектов. Я также добавил это в запись реестра для файла .spec, чтобы можно было быстро заморозить проект из Проводника:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\.SPEC\shell\Freeze\command]
@="C:\\Python27\\Scripts\\pybuild.bat \"%1\""

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

Приложение не запустилось потому что конфигурация приложения это неверно. Переустановка Приложение может решить проблему.

но только на некоторых машинах, обычно под управлением Windows XP. Я обнаружил, что когда пользователь установил Microsoft Visual C ++ 2008 Runtime, проблема исчезла.

Замороженные приложения, созданные с помощью PyInstaller, не имели этой проблемы, так как кажется, что эти среды выполнения упакованы в выходную папку. Если UPX доступен где-то на вашем пути, он также сожмет ваши DLL и PYD-файлы, что приведет к уменьшению выходной папки.

Короче говоря - и py2exe, и PyInstaller работают нормально. Я столкнулся с несколькими проблемами с py2exe при его использовании, и хотя для них могут быть обходные пути, если вы поохотитесь, я обнаружил, что PyInstaller работает лучше без каких-либо изменений. Я распространял замороженные приложения от PyInstaller, которые используют библиотеки изображений и баз данных из PyQt4, а также несколько других сторонних библиотек, и пока не столкнулся с какими-либо проблемами.

...