Я уже давно пользуюсь cx_Freeze, и я действительно хотел сделать одну вещь: поместить ВСЕ файлы в ОДИН исполняемый файл, который я могу распространять. Не очень удобно отправлять вокруг папку, заполненную 30 файлами, все в одном каталоге. Как я могу сделать это? Благодарю.
cx_Freeze Python один файл?
Ответ 1
Разве это не то, что делает bbfreeze
?
Учебник здесь: http://www.blog.pythonlibrary.org/2010/08/19/a-bbfreeze-tutorial-build-a-binary-series/
На самом деле это не так сложно свернуть с Python zipimport http://docs.python.org/library/zipimport.html
Вы можете использовать что-то вроде UPX, которое является более общим решением, а не только Python. http://upx.sourceforge.net/
Ответ 2
Он не поддерживается в cx_freeze. В списке рассылки была дискуссия. Насколько я помню, автор заявил, что другие (PyInstaller, Py2Exe) используют некоторые грязные хаки для достижения этого. Некоторые антивирусные программы также могут рассматривать это поведение как вирус.
Я использовал PyInstaller некоторое время, но вернулся к cx_freeze из-за поддержки Python 2.7. Я собираю все, используя Inno Setup, поэтому его легко распространять. Зависит от использования Windows или нет.
Ответ 3
Вы можете использовать "bdist_msi" вместо "build". Это создаст папку dist в каталоге с одним приложением установки.
Ответ 4
Согласно документации
cx_Freeze не поддерживает создание одного файла EXE, где все библиотеки для вашего приложения встроены в один исполняемый файл.
Документация дает несколько вариантов получения одного файла.
Еще одним вариантом в Windows является использование команды bdist_msi
для создания одного файла установщика Microsoft (.msi
) для вашего приложения, как упоминалось @QuaziRabbi. Эта команда имеет несколько cx_Freeze
-specific, задокументированных здесь для настройки установщика. Эта команда перегружает команду bdist_msi
пакета distutils
, что само по себе дает еще несколько опций для настройки установщика. Доступные опции не документированы, нужно взглянуть на исходный код пакета distutils
. Интересные примеры: использование cx-freeze для создания msi, который добавляет ярлык на рабочий стол, и cx_freeze bdist_msi: создавать записи реестра?
Другой вариант - использовать другой инструмент для создания более настраиваемого установщика с одним файлом для замороженного приложения после cx_Freeze
сборки cx_Freeze
. Основанный на сценариях инструмент NSIS (Nullsoft Scriptable Install System) позволяет создать очень настраиваемый установщик, а использование сценария означает, что этот шаг может быть полностью автоматизирован. @Fenisko отвечает упоминает еще один инструмент, и есть еще много.