Как сделать автономный исполняемый файл 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, и он работает, но у меня были некоторые проблемы.

  • Он показал некоторые проблемы для создания отдельных файлов в 64-битных версиях Windows: Использование bundle_files = 1 с py2exe не работает;

  • Необходимо создать файл setup.py для его работы. http://www.py2exe.org/index.cgi/Tutorial#Step2;

  • У меня были проблемы с зависимостями, которые вам нужно решить, импортируя пакеты в установочный файл,

  • Мне не удалось заставить его работать вместе с PyQt..

Эта последняя причина заставила меня попробовать 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:

  1. В однофайловом случае возникает проблема с отсутствием.dll для win7 OS, которая требует некоторой предварительной установки и т.д. Yawn. С обычной сборкой с несколькими файлами таких проблем нет.
  2. Все файлы, которые использует мой скрипт python (он развертывает веб-сервер торнадо и нуждается в большом количестве файлов на сайте!) Не нужно никуда перемещать: я просто создаю ярлык вверху.
  3. Я могу фактически использовать эту ту же самую папку в ubuntu (запустите python3 myfile.py) и окна (дважды щелкните ярлык).
  4. Мне не нужно беспокоиться о чрезмерно сложном взломе файла.spec, чтобы включить файлы данных и т.д.

О, не забудьте удалить из папки сборки после создания, сэкономить на размере.