Вопрос-Ответ

Create a single executable from a Python project [closed]

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

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

Переведено автоматически
Ответ 1

Существует несколько различных способов сделать это.


Первый и, вероятно, наиболее распространенный способ - использовать программы в стиле "freeze". Эти программы работают путем объединения Python и вашей программы, по сути, объединяя их в единый исполняемый файл.:

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


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


  • pynsist:


    Веб-сайт || Репозиторий || PyPI


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


    Для запуска самого инструмента pynsist требуется Python 3.5+, но он поддерживает комплектацию вашей программы любой версией Python.


    Pynsist создаст только установщики Windows, но может быть запущен из Windows, Mac и Linux. Смотрите их FAQ для получения более подробной информации.



  • Nuitka:


    Веб-сайт || Репозиторий (зеркало Github) || PyPI


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


    Поддерживает Python 2.6 - 2.7 и Python 3.3 - 3.10 в Windows, Mac и Linux.



  • cython:


    Веб-сайт || Репозиторий || PyPI


    Cython похож на Nuitka тем, что это компилятор Python. Однако вместо прямой компиляции вашего кода он будет компилировать его в C. Затем вы можете взять этот код на C и превратить свой код в исполняемый файл. В вашей системе должен быть доступен компилятор C.


    Поддерживает Python 2.7 и Python 3.3 - 3.11 в Windows, Mac и Linux.




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

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

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

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

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


Как уже было сказано, преобразование вашей программы на Python в исполняемый файл не обязательно является единственным способом распространения вашего кода. Чтобы узнать больше о том, какие другие варианты доступны, смотрите следующие ссылки:

Ответ 2

По состоянию на июль 2022 годаpyinstaller находится в активной разработке. Вы можете увидеть последние изменения на GitHub. Поддерживается для Windows, Linux и macOS; 32 и 64-разрядные версии. Поддерживается Python версий 2.6, 2.7 и 3.3+.

Ответ 3

auto-py-to-exe - это графический интерфейс для PyInstaller.

Автоматическое преобразование py в exe

python