Я создаю приложение Python и не хочу заставлять своих клиентов устанавливать Python и модули.
Итак, есть ли способ скомпилировать скрипт Python для автономного исполняемого файла?
python
executable
Джефф
источник
источник
Ответы:
Вы можете использовать py2exe, как уже ответили, и использовать cython для преобразования ваших ключевых
.py
файлов в.pyc
C-скомпилированные файлы, как.dll
в Windows и.so
в Linux, гораздо труднее восстановить, чем обычные.pyo
и.pyc
файлы (а также повысить производительность!)источник
Вы можете использовать PyInstaller для упаковки программ на Python как автономных исполняемых файлов. Работает на Windows, Linux и Mac.
источник
Вы можете исследовать Нуитку . Он берет исходный код Python и преобразует его в вызовы API C ++. Затем он компилируется в исполняемый двоичный файл (ELF в Linux). Он существует уже несколько лет и поддерживает широкий спектр версий Python.
Вероятно, вы также получите улучшение производительности, если будете его использовать. Рекомендуемые.
источник
Я хотел бы собрать некоторую полезную информацию о создании автономных файлов в 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 Path):
Вы можете создать один файл среди других параметров ( https://pyinstaller.readthedocs.io/en/stable/usage.html#options ).
У меня была только одна проблема с использованием PyInstaller и многопроцессорного пакета, которая была решена с помощью этого рецепта: https://github.com/pyinstaller/pyinstaller/wiki/Recipe-Multiprocessing .
Итак, я думаю, что, по крайней мере для Python 2.7, лучше и проще вариант PyInstaller.
источник
--onefile
Флаг не поможет вам сделать это портативный на Windows, так как исполняемый файл все еще хочет , чтобы связь сapi-ms-win-crt-runtime-l1-1-0.dll
библиотекой (или / и другие) , которые должны быть установлены черезvcredist
пакет. Таким образом, зависимость все еще существует и должна быть установлена до запуска.Да, есть возможность компилировать скрипты Python в отдельный исполняемый файл.
PyInstaller может использоваться для преобразования программ Python в автономные исполняемые файлы под Windows , Linux , Mac OS X , FreeBSD , Solaris и AIX . Это один из рекомендуемых конвертеров.
py2exe преобразует скрипты Python в исполняемый файл только на платформе Windows.
Cython является статическим компилятором как для языка программирования Python, так и для расширенного языка программирования Cython.
источник
И третий вариант -
cx_Freeze
кроссплатформенный.источник
cx_Freeze
с конца 2017 года на pypi нет перечисленных выпусков. Был ли этот проект заброшен?вам может понравиться py2exe . вы также найдете там информацию о том, как сделать это на Linux
источник
Используйте py2exe .... используйте ниже настроенные файлы:
источник
Мне нравится pyinstaller - особенно "оконный" вариант:
Он создаст один файл * .exe в папке dist /.
источник
Я также рекомендую pyinstaller для лучшей обратной совместимости, такой как python 2.3 - 2.7.
для py2exe у вас должен быть python 2.6
источник
Для скриптов Python 3.2 единственным выбором является Cxfreeze. Соберите его из источников, иначе он не будет работать.
Для python 2.x я предлагаю pyinstaller, поскольку он может упаковать программу на python в один исполняемый файл, в отличие от CxFreeze, который выводит также библиотеки.
источник
py2exe сделает исполняемый файл, который вы хотите, но вам нужно иметь ту же версию MSVCR90.dll на компьютере, на котором вы собираетесь использовать новый исполняемый файл. См. Http://www.py2exe.org/index.cgi/Tutorial для получения дополнительной информации.
источник
Вы можете найти список утилит распространения, перечисленных в @ https://wiki.python.org/moin/DistributionUtilities .
Я использую bbfreeze, и он работал очень хорошо (хотя поддержка Python 3 еще не была).
источник
.so
файлов или скопирует файлы .egg напрямую, и все они будут присутствовать в одном каталоге (или как один файл). Там не требуется установка.Это создает автономный EXE-файл в Windows. ВАЖНОЕ ПРИМЕЧАНИЕ: EXE-файл будет создан в папке с именем «dist».
вы можете установить pyinstaller используя
pip install PyInstaller
источник
Не совсем упаковка кода Python, но теперь есть и сварливый от Google, который переносит код в Go. Он не поддерживает Python C API, поэтому он может работать не для всех проектов.
источник
Используя pyinstaller, я нашел лучший способ, используя ярлык для .exe вместо создания
--onefile
. В любом случае, вероятно, есть некоторые файлы данных, и если вы запускаете приложение для сайта, то ваша программа также зависит от файлов html, js, css. Нет смысла перемещать все эти файлы куда-нибудь ... вместо этого, что если мы переместим рабочий путь вверх.Создайте ярлык для исполняемого файла, переместите его сверху и задайте пути назначения и запуска, как указано, чтобы относительные пути шли в 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
который:О, не забудьте удалить папку сборки после сборки, сэкономите на размере.
источник
Используйте Cython, чтобы конвертировать в c, компилировать и связывать с gcc. Другой может быть сделать основные функции в c (те, которые вы хотите сделать сложными для реверсии), скомпилировать их и использовать python boost для импорта скомпилированного кода (плюс вы получите намного более быстрое выполнение кода). затем используйте любой инструмент, упомянутый для распространения.
источник
Мне сказали, что PyRun, https://www.egenix.com/products/python/PyRun/ , также является опцией.
источник