Вот несколько распространенных. Если явно не указано иное, все перечисленные ниже проекты активно поддерживаются на момент моего последнего редактирования (январь 2020 г.).
Я также включил ссылки на их соответствующие веб-сайты, репозитории и списки PyPi на тот случай, если вы хотите сами проверить, как часто они обновлялись.
Кроме того, если не указано иное, все программы, перечисленные ниже, создают исполняемый файл специально для той операционной системы, в которой он работает. Так, например, запуск Pyinstaller в Windows приведет к созданию исполняемого файла Windows, а запуск Pyinstaller в Linux создаст исполняемый файл Linux. Если вы хотите создать исполняемый файл для нескольких операционных систем, вам придется изучить использование виртуальных машин или что-то вроде Wine .
Все следующие программы работают одинаково - они объединяют Python и вашу программу, эффективно комбинируя их для создания исполняемого файла.
PyInstaller:
- Ссылки : Сайт || Репо || PyPi
- Поддерживает : Python 2.7 и Python 3.4 - 3.7 в Windows, Mac и Linux.
cx_Freeze:
- Ссылки: Сайт || Репо || PyPi
- Поддерживает: Python 2.7 и 3.5 - 3.8 в Windows, Mac и Linux.
py2app:
- Ссылки: Сайт || Репо || PyPi
- Поддерживает: Python 2.7 и 3.3 (?) - 3.7 (?) Только на Mac.
- Примечание. На момент моего последнего редактирования мне не удалось окончательно определить точный диапазон версий Python, поддерживаемых pyapp. В последнем выпуске упоминается поддержка Python 3.7.
Примечание: предыдущие версии этого поста включали записи для py2exe ( репо ) и bbfreeze ( репо ). Оба проекта были удалены из этого списка: в течение нескольких лет они практически не проявляли активности и, похоже, полностью не поддерживаются. См. Историю изменений для старых записей.
Конечно, это не единственный способ делать что-то:
пинсист:
- Ссылки: Сайт || Репо || PyPi
- Поддерживает: все версии Python? Примечание - будут созданы только установщики Windows .
Другие примечания:
Pynsist, похоже, поддерживает объединение любой произвольной версии Python с вашим приложением. Однако для работы самого инструмента требуется Python 3.5+.
Pynsist создаст установщик Windows для вашей программы, который будет напрямую устанавливать Python на компьютер пользователя, вместо того, чтобы связывать его с вашим кодом, и создавать ярлыки, которые ссылаются на ваш скрипт Python. Хотя эта программа создает только установщики для Windows, похоже, что вы все еще можете запускать Pynsist на компьютерах Mac и Linux.
Нуитка:
- Ссылки: Сайт || Репо (зеркало Github) || PyPi
- Поддерживает: Python 2.6 - 2.7 и Python 3.3 - 3.7 в Windows, Mac и Linux.
- Другие примечания: Nuitka буквально скомпилирует ваш код Python и создаст exe (в отличие от других проектов, которые просто включают Python), чтобы попытаться ускорить ваш код. В качестве побочного эффекта вы также получите удобный исполняемый файл, который сможете распространять. Обратите внимание, что в вашей системе должен быть доступен компилятор C ++ .
cython:
- Ссылки: Сайт || Репо || PyPi
- Поддерживает: Python 2.6 - 2.7 и Python 3.2 - 3.8 в Windows, Mac и Linux.
- Другие примечания: Cython похож на Nuitka в том, что это компилятор Python. Однако вместо того, чтобы напрямую компилировать ваш код, он скомпилирует его на C. Затем вы можете взять этот код C и превратить свой код в exe . В вашей системе должен быть доступен компилятор C.
Лично я предпочитаю использовать PyInstaller, так как мне было проще всего начать работу, он был разработан для удобной работы с различными популярными библиотеками, такими как numpy или pygame, и имеет отличную совместимость с различными ОС и версиями Python.
Тем не менее, я также успешно создал различные exes с использованием cx_Freeze без особых трудностей, так что вам также следует подумать о том, чтобы попробовать эту программу.
У меня еще не было возможности всесторонне опробовать pynist, Nuitka или Cython, но они кажутся довольно интересными и инновационными решениями. Если у вас возникнут проблемы с использованием первой группы программ, возможно, стоит попробовать одну из этих трех. Поскольку они работают принципиально иначе, чем программы в стиле Pyinstaller / cx_freeze, они могут преуспеть в тех странных случаях, когда первая группа терпит неудачу.
В частности, я думаю, что pynist - это хороший способ полностью обойти проблему распространения вашего кода: Mac и Linux уже имеют встроенную поддержку Python, и простая установка Python в Windows действительно может быть самым чистым решением. (Обратной стороной является то, что вам нужно беспокоиться о таргетинге на несколько версий Python + установка библиотек).
Nuitka и Cython (по моему ограниченному опыту) работают довольно хорошо. Опять же, я сам не тестировал их тщательно, и поэтому мое главное наблюдение состоит в том, что они, похоже, занимают гораздо больше времени для создания exe, чем программы в стиле «замораживания».
При этом преобразование вашей программы Python в исполняемый файл - не обязательно единственный способ распространения вашего кода. Чтобы узнать больше о доступных вариантах, перейдите по следующим ссылкам: