Создание одного исполняемого файла из проекта Python



Я хочу создать один исполняемый файл из моего проекта на Python. Пользователь должен иметь возможность загружать и запускать его без установки питона. Если бы я просто распространял пакет, я мог бы использовать pip, wheel и PyPI для его создания и распространения, но для этого требуется, чтобы пользователь имел Python и знал, как устанавливать пакеты. Что я могу использовать для создания автономного исполняемого файла из проекта Python?

710   2  

2 ответов:

вот некоторые общие из них. Если явно не указано, все проекты, перечисленные ниже, активно поддерживаются на момент моего последнего редактирования (август 2018 года).

Я также включил ссылки на их соответствующие веб-сайты, репозитории и списки PyPi, если вы хотите проверить для себя, как часто они обновлялись.

кроме того, если не указано иное, все программы, перечисленные ниже, будут создавать exe специально для операционной системы, в которой он работает. Так например, работает Pyinstaller в Windows будет произвести для Windows exe, но работает Pyinstaller в Linux будет производить exe в Линукс. Если вы хотите создать exe для нескольких операционных систем, вам придется изучить использование виртуальных машин или изучить использование чего-то вроде вина.


все следующие программы работают одинаково - они объединяют Python и вашу программу, эффективно объединяя их для создания выполнимый.

  • PyInstaller:

    • ссылки:сайт|/РЕПО|/PyPi
    • поддерживает: Python 2.7 и Python 3.4-3.7 на Windows, Mac и Linux.
  • cx_Freeze:

    • ссылки:сайт|/РЕПО | / PyPi
    • поддержка: Python 2.7 и 3.5 - 3.7 (?) на Windows, Mac и Linux.
  • pyapp:

    • ссылки:сайт|/РЕПО|/PyPi
    • поддержка: Python 2.7 и 3.3 (?)- 3.7 (?) только в Mac.
    • Примечание: по состоянию на мое последнее редактирование, я был невозможно окончательно определить точный диапазон версий Python, поддерживаемых pyapp. В последнем выпуске упоминается поддержка Python 3.7.

Примечание: предыдущие версии этого сообщения включали записи для py2exe (РЕПО) и bbfreeze (РЕПО). Оба проекта были удалены из этого списка: они видели мало-никакой деятельности в течение нескольких лет и, похоже, полностью без присмотра. См. раздел редактирование истории для старых записей.


конечно, это не единственный способ делать вещи:

  • pynsist:

    • ссылки:сайт|/РЕПО|/PyPi
    • поддержка: все версии Python? Примечание-создаст установщики Windows только.
    • другие Примечания: Pynsist, похоже, поддерживает объединение любой произвольной версии Python с вашим приложением. Однако сам инструмент требует запуска Python 3.5+.

      Pynsist создаст установщик Windows для вашей программы, который будет непосредственно устанавливать Python на компьютер пользователя вместо того, чтобы связывать его с вашим кодом и создавать ярлыки, которые ссылаются на ваш скрипт Python. Хотя эта программа производит только монтажникам окон, кажется, что вы можете по-прежнему работает Pynsist на компьютерах Mac и Linux.

  • Nuitka:

    • ссылки:сайт|/РЕПО (зеркало Github)|/PyPi
    • поддержка: Python 2.6-2.7 и Python 3.3-3.7 на Windows, Mac и Linux.
    • другие Примечания: Nuitka будет буквально скомпилируйте свой код Python и создайте exe (в отличие от других проектов, которые просто включают Python), чтобы попытаться ускорить ваш код. В качестве побочного эффекта вы также получите удобный exe, который вы можете распространять. Обратите внимание, что вам нужно иметь C++ компилятор доступно в вашей системе.
  • cython:

    • ссылки:сайт|/РЕПО || PyPi
    • поддержка: в Python 2.6 - 2.7 и Python 3.2 - 3.7 (?) на Windows, Mac и Linux.
    • другие Примечания: Cython похож на Nuitka в том, что это компилятор Python. Однако, вместо того, чтобы напрямую компилировать код, она компилировать ее с. тогда можно считать, что код на C и превратите ваш код в exe. На вашем компьютере должен быть доступен компилятор C система.

мое личное предпочтение-использовать PyInstaller, так как это было проще всего для меня, чтобы встать и работать, был разработан, чтобы хорошо работать с различными популярными библиотеками, такими как numpy или pygame, и имеет большую совместимость с различными ОС и версиями Python.

тем не менее, я также успешно построил различные exes с помощью cx_Freeze без особых трудностей, поэтому вы также должны рассмотреть эту программу.

I еще не было возможности попробовать pynist, Nuitka или Cython экстенсивно, но они кажутся довольно интересными и инновационными решениями. Если у вас возникли проблемы с использованием первой группы программ, возможно, стоит попробовать один из этих трех. Поскольку они работают принципиально иначе, чем программы в стиле Pyinstaller/cx_freeze, они могут преуспеть в тех нечетных случаях, когда первая группа терпит неудачу.

в частности, я думаю, что pynist-это хороший способ обойти весь проблема распространения вашего кода в целом: Mac и Linux уже имеют встроенную поддержку Python, и просто установка Python на Windows может быть действительно самым чистым решением. (Недостатком теперь является то, что вам нужно беспокоиться о таргетинге нескольких версий Python + установка библиотек).

Nuitka и Cython (в моем ограниченном опыте), кажется, работают довольно хорошо. Опять же, я не проверял их широко сам, и поэтому мое главное наблюдение заключается в том, что они, похоже, занимают гораздо больше времени создайте exe, а затем программы стиля "замораживания".

в качестве заключительного замечания, если вы хотите поддерживать только Linux, вы можете изучить создание дистрибутивного пакета для вашего пакета, а не превращать его в исполняемый файл. Список инструментов, которые могут помочь вам сделать это уже выходит за рамки этого поста, но вот материал для чтения если вы решите исследовать этот маршрут.

pyinstaller находится в стадии активной разработки. Вы можете видеть последние изменения на GitHub.

Он имеет поддержку для всех трех основных платформ:

  • Windows (32-разрядная и 64-разрядная)
  • Linux (32-бит и 64-бит)
  • Mac OS X (32-разрядная и 64-разрядная)

и он поддерживает версии Python 2.6 и 2.7. Он не поддерживает Python 3, но есть экспериментальный Python 3 ветка.

обновление

начиная с версии 3.2.1, он поддерживает Python 2.7, 3.3-3.5

Comments

    Ничего не найдено.