Как сделать автономный исполняемый файл Python script для запуска без ЛЮБОЙ зависимости?
Я создаю приложение Python и не хочу заставлять моих клиентов устанавливать Python и модули. Я также хочу сделать свое приложение закрытым.
Итак, есть ли способ скомпилировать скрипты Python для автономных исполняемых файлов?
Ответы
Ответ 1
Вы можете использовать py2exe, как уже было сказано, и использовать cython для преобразования вашего ключа .py
файлы в .pyc
, C скомпилированные файлы, такие как .dll
в Windows и .so
в Linux, гораздо труднее вернуть, чем обычные файлы .pyo
и .pyc
(а также повысить производительность!)
Ответ 2
Вы можете использовать PyInstaller для упаковки программ Python в качестве автономных исполняемых файлов. Он работает на Windows, Linux и Mac.
Быстрый запуск PyInstaller
Установите PyInstaller из PyPI:
pip install pyinstaller
Перейдите в каталог программ и запустите:
pyinstaller yourprogram.py
Это приведет к созданию пакета в подкаталоге dist
.
Более подробное руководство по работе см. В руководстве.
Ответ 3
Возможно, вы захотите изучить Nuitka. Он использует исходный код python и преобразует его в вызовы API С++. Затем он компилируется в исполняемый двоичный файл (ELF в Linux). Он существует уже несколько лет и поддерживает широкий спектр версий Python.
Вероятно, вы также получите повышение производительности, если вы его используете. Рекомендуется.
Ответ 4
И третий вариант cx_Freeze
, который является кросс-платформенным.
Ответ 5
Я хотел бы скомпилировать некоторую полезную информацию о создании автономных файлов в Windows с помощью Python 2.7.
Я использовал py2exe, и он работает, но у меня были некоторые проблемы.
Эта последняя причина заставила меня попробовать PyInstaller http://www.pyinstaller.org/.
По-моему, это намного лучше, потому что:
- Это проще в использовании.
Я предлагаю создать файл .bat со следующими строками, например (pyinstaller.exe должен находиться в Пути Windows):
pyinstaller.exe --onefile MyCode.py
Итак, я думаю, что, по крайней мере для python 2.7, лучшим и простым вариантом является PyInstaller.
Ответ 6
Да, можно скомпилировать скрипты Python в автономный исполняемый файл.
PyInstaller можно использовать для преобразования программ Python в автономные исполняемые файлы под Windows, Linux, Mac OS X, FreeBSD, Solaris и AIX. Это один из рекомендуемых преобразователей.
py2exe преобразует скрипты Python в исполняемый файл только в платформе Windows.
Cython является статическим компилятором как для языка программирования Python, так и для расширенного языка программирования Cython.
Ответ 7
вам может понравиться py2exe. вы также найдете там информацию о том, как это сделать на linux
Ответ 8
Использовать py2exe.... использовать ниже настроенные файлы:
from distutils.core import setup
import py2exe
from distutils.filelist import findall
import matplotlib
setup(
console=['PlotMemInfo.py'],
options={
'py2exe': {
'packages' : ['matplotlib'],
'dll_excludes': ['libgdk-win32-2.0-0.dll',
'libgobject-2.0-0.dll',
'libgdk_pixbuf-2.0-0.dll']
}
},
data_files = matplotlib.get_py2exe_datafiles()
)
Ответ 9
Я также рекомендую pyinstaller
для лучшей обратной совместимости, такой как python 2.3 - 2.7.
py2exe, вы должны иметь python 2.6
Ответ 10
Для скриптов Python 3.2 единственным выбором является Cxfreeze. Создайте его из источников, иначе он не будет работать.
Для python 2.x я предлагаю pyinstaller, поскольку он может упаковать программу python в один исполняемый файл, в отличие от CxFreeze, который выводит также библиотеки.
Ответ 11
py2exe сделает exe файл, который вы хотите, но вам нужно иметь ту же версию MSVCR90.dll на машине, которую вы собираетесь использовать в своем новом exe. Подробнее см. http://www.py2exe.org/index.cgi/Tutorial.
Ответ 12
Вы можете найти список утилит распространения, перечисленных @https://wiki.python.org/moin/DistributionUtilities.
Я использую bbfreeze, и он работает очень хорошо (но для поддержки python 3).
Ответ 13
Не совсем упаковка кода python, но теперь есть и grumpy из google, который переводит код в Go. Он не поддерживает python C api, поэтому он может не работать для всех проектов.
Ответ 14
Мне нравится pyinstaller - особенно "оконный" вариант:
pyinstaller --onefile --windowed myscript.py
Он создаст один файл *.exe в папке dist/.
Ответ 15
Используйте Cython для преобразования в c, компиляции и ссылки с gcc. Другим может быть, сделать основные функции в c (те, которые вы хотите сделать сложными для обратного), скомпилировать их и использовать python boost для импорта скомпилированного кода (плюс вы получите гораздо более быстрое выполнение кода). затем используйте любой инструмент, упомянутый для распространения.
Ответ 16
Используя pyinstaller, я нашел лучший метод, использующий ярлык для.exe, а не создание --onefile
. В любом случае, возможно, есть некоторые файлы данных, и если вы используете приложение на основе сайта, ваша программа также зависит от файлов html, js, css. Нет смысла перемещать все эти файлы где-то.. вместо этого, если мы переместим рабочий путь вверх.
Сделайте ярлык для exe, переместите его вверху и установите целевые и начальные пути, как указано, чтобы иметь относительные пути в dist\folder: Target: %windir%\system32\cmd.exe/c start dist\web_wrapper\web_wrapper.exe Start in: "%windir%\system32\cmd.exe/c start dist\web_wrapper\"
Можно переименовать ярлык на все, что переименовано в "GTFS-Manager"
Теперь, когда я дважды щелкаю ярлык, это как если бы я python-запускал файл! Я нашел этот подход лучше, чем --onefile
:
- В однофайловом случае возникает проблема с отсутствием.dll для win7 OS, которая требует некоторой предварительной установки и т.д. Yawn. С обычной сборкой с несколькими файлами таких проблем нет.
- Все файлы, которые использует мой скрипт python (он развертывает веб-сервер торнадо и нуждается в большом количестве файлов на сайте!) Не нужно никуда перемещать: я просто создаю ярлык вверху.
- Я могу фактически использовать эту ту же самую папку в ubuntu (запустите python3 myfile.py) и окна (дважды щелкните ярлык).
- Мне не нужно беспокоиться о чрезмерно сложном взломе файла.spec, чтобы включить файлы данных и т.д.
О, не забудьте удалить из папки сборки после создания, сэкономить на размере.
Ответ 17
Мне сказали, что PyRun, https://www.egenix.com/products/python/PyRun/, также является опцией.