Подтвердить что ты не робот

cx_Freeze Python один файл?

Я уже давно пользуюсь cx_Freeze, и я действительно хотел сделать одну вещь: поместить ВСЕ файлы в ОДИН исполняемый файл, который я могу распространять. Не очень удобно отправлять вокруг папку, заполненную 30 файлами, все в одном каталоге. Как я могу сделать это? Благодарю.

4b9b3361

Ответ 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 или нет.

Ответ 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 отвечает упоминает еще один инструмент, и есть еще много.