Я использовал 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, а также несколько других сторонних библиотек, и пока не столкнулся с какими-либо проблемами.