Я хочу создать единственный исполняемый файл из моего проекта Python. Пользователь должен иметь возможность загрузить и запустить его без установки Python. Если бы я просто распространял пакет, я мог бы использовать pip, wheel и PyPI для его сборки и распространения, но для этого требуется, чтобы у пользователя был Python и он знал, как устанавливать пакеты. Что я могу использовать для создания автономного исполняемого файла из проекта Python?
python
compilation
exe
packaging
software-distribution
ShadowFlame
источник
источник
pdb
) нет легкого доступа к исполняемым файлам,py2exe
(не знаю о других) не включает.py
файлы, поэтому вы не увидите исходные строки в трассировках стека.Ответы:
Вот несколько распространенных. Если явно не указано иное, все перечисленные ниже проекты активно поддерживаются на момент моего последнего редактирования (январь 2020 г.).
Я также включил ссылки на их соответствующие веб-сайты, репозитории и списки PyPi на тот случай, если вы хотите сами проверить, как часто они обновлялись.
Кроме того, если не указано иное, все программы, перечисленные ниже, создают исполняемый файл специально для той операционной системы, в которой он работает. Так, например, запуск Pyinstaller в Windows приведет к созданию исполняемого файла Windows, а запуск Pyinstaller в Linux создаст исполняемый файл Linux. Если вы хотите создать исполняемый файл для нескольких операционных систем, вам придется изучить использование виртуальных машин или что-то вроде Wine .
Все следующие программы работают одинаково - они объединяют Python и вашу программу, эффективно комбинируя их для создания исполняемого файла.
PyInstaller:
cx_Freeze:
py2app:
Примечание: предыдущие версии этого поста включали записи для py2exe ( репо ) и bbfreeze ( репо ). Оба проекта были удалены из этого списка: в течение нескольких лет они практически не проявляли активности и, похоже, полностью не поддерживаются. См. Историю изменений для старых записей.
Конечно, это не единственный способ делать что-то:
пинсист:
Другие примечания: Pynsist, похоже, поддерживает объединение любой произвольной версии Python с вашим приложением. Однако для работы самого инструмента требуется Python 3.5+.
Pynsist создаст установщик Windows для вашей программы, который будет напрямую устанавливать Python на компьютер пользователя, вместо того, чтобы связывать его с вашим кодом, и создавать ярлыки, которые ссылаются на ваш скрипт Python. Хотя эта программа создает только установщики для Windows, похоже, что вы все еще можете запускать Pynsist на компьютерах Mac и Linux.
Нуитка:
cython:
Лично я предпочитаю использовать PyInstaller, так как мне было проще всего начать работу, он был разработан для удобной работы с различными популярными библиотеками, такими как numpy или pygame, и имеет отличную совместимость с различными ОС и версиями Python.
Тем не менее, я также успешно создал различные exes с использованием cx_Freeze без особых трудностей, так что вам также следует подумать о том, чтобы попробовать эту программу.
У меня еще не было возможности всесторонне опробовать pynist, Nuitka или Cython, но они кажутся довольно интересными и инновационными решениями. Если у вас возникнут проблемы с использованием первой группы программ, возможно, стоит попробовать одну из этих трех. Поскольку они работают принципиально иначе, чем программы в стиле Pyinstaller / cx_freeze, они могут преуспеть в тех странных случаях, когда первая группа терпит неудачу.
В частности, я думаю, что pynist - это хороший способ полностью обойти проблему распространения вашего кода: Mac и Linux уже имеют встроенную поддержку Python, и простая установка Python в Windows действительно может быть самым чистым решением. (Обратной стороной является то, что вам нужно беспокоиться о таргетинге на несколько версий Python + установка библиотек).
Nuitka и Cython (по моему ограниченному опыту) работают довольно хорошо. Опять же, я сам не тестировал их тщательно, и поэтому мое главное наблюдение состоит в том, что они, похоже, занимают гораздо больше времени для создания exe, чем программы в стиле «замораживания».
При этом преобразование вашей программы Python в исполняемый файл - не обязательно единственный способ распространения вашего кода. Чтобы узнать больше о доступных вариантах, перейдите по следующим ссылкам:
источник
msvcrxx.dll
, гдеxx
это номер версии) , чтобы сделать .exe запустить (или попросить пользователей установить его сами по себе). Это необходимо, потому что Python построен в Windows с использованием Visual Studio.pyinstaller все еще находится в активной разработке. Вы можете увидеть последние изменения на GitHub.
Он поддерживает все три основные платформы:
и поддерживает Python версий 2.6 и 2.7. Он не поддерживает Python 3, но есть экспериментальная ветка Python 3 .
Обновить
Начиная с версии 3.2.1 он поддерживает Python 2.7, 3.3-3.5.
источник
Лучшее использование,
pip install auto-py-to-exe
обеспечивающее красивый пользовательский интерфейс со всеми параметрами, необходимыми для создания исполняемого файла.После установки просто введите
auto-py-to-exe
свой терминал или командную строку.источник