Могу ли я как-то "скомпилировать" python script для работы на ПК без установки Python?
Итак, у меня есть Python script:
myscript.py
Я выполняю его следующим образом:
python D:\myscript.py
Однако, я должен установить Python и включить его в переменную среды PATH
для работы.
Возможно ли "связать" исполняемый файл Python с Python script, чтобы другие люди могли запускать его на своих ПК без Python?
Это нормально, если он будет работать только в Windows.
EDIT:
После попытки compile.py
получить эту ошибку:
Traceback (most recent call last):
File "D:\stuff\compile.py", line 4, in <module>
import py2exe
ImportError: No module named py2exe
Ответы
Ответ 1
Вот один из способов сделать это (для Windows, используя py2exe
).
Сначала установите py2exe
в окне Windows.
Затем создайте python script с именем compile.py
, например:
import sys
from distutils.core import setup
import py2exe
entry_point = sys.argv[1]
sys.argv.pop()
sys.argv.append('py2exe')
sys.argv.append('-q')
opts = {
'py2exe': {
'compressed': 1,
'optimize': 2,
'bundle_files': 1
}
}
setup(console=[entry_point], options=opts, zipfile=None)
Чтобы скомпилировать ваш Python script в исполняемый файл Windows, запустите этот script с вашей программой в качестве аргумента:
$ python compile.py myscript.py
Он выплюнет бинарный исполняемый файл (EXE) с интерпретатором Python, скомпилированным внутри. Затем вы можете просто распространять этот исполняемый файл.
Ответ 2
PyInstaller хорошо работает для меня, создавая разумно небольшие пакеты из-за использования upx. Его обнаружение зависимости было лучше, чем py2exe в то время. Похоже, что он не имеет много недавних разработок и, вероятно, не работает с 3.x.
Источник в репозитории является лучшей отправной точкой, чем пакет 1.4.
Также см. страницу wiki о работе с Python 2.6 +.
Из списка функций:
- Упаковка программ Python в стандартные исполняемые файлы, которые работают на компьютерах без установленного Python.
- Мультиплатформенность: работает под Windows (32-разрядная и 64-разрядная), Linux (32-разрядная и 64-разрядная) и Mac OS X (только 32-разрядная версия, см. MacOSCompatibility).
- Multiversion: работает под любой версией Python с 1.5 до 2.7. ПРИМЕЧАНИЕ. Если вы используете Python 2.6+ в Windows, см. Python26Win.
- Режим гибкой упаковки:
- Единый каталог: создайте каталог, содержащий исполняемый файл, плюс все внешние двоичные модули (.dll,.pyd,.so), используемые программой.
- Один файл: создайте один исполняемый файл, полностью автономный, который работает без какой-либо внешней зависимости.
- Пользовательский: вы можете автоматизировать PyInstaller для выполнения любого режима упаковки, который вы хотите, с помощью простого файла script в Python.
- Явная интеллектуальная поддержка многих третьих пакетов (для скрытых импортов, внешних файлов данных и т.д.), чтобы заставить их работать с PyInstaller из коробки (см. SupportedPackages).
- Полная поддержка EGG с одним файлом: требуемые файлы .egg автоматически проверяются для зависимостей и в комплекте, а все функции, зависящие от яйца, поддерживаются также во время выполнения (точки входа и т.д.).
- Частичный каталог Поддержка EGG: требуемые каталоги .egg автоматически проверяются для зависимостей и в комплекте, но функции, зависящие от яиц, не будут работать во время выполнения.
- Автоматическая поддержка двоичных библиотек, используемых через ctypes (подробнее см. CtypesDependencySupport).
- Поддержка автоматической бинарной упаковки через известный компрессор UPX.
- Дополнительный режим консоли (см. стандартный вывод и стандартную ошибку во время выполнения).
- Функции, специфичные для Windows:
- Поддержка исполняемых файлов для подписи кода.
- Полная автоматическая поддержка для ЭЛТ: нет необходимости вручную распространять MSVCR *.DLL, установщики переадресации, манифесты или что-то еще; настоящие однофайловые приложения, которые работают повсюду!
- Выбираемый исполняемый значок.
- Полностью настраиваемый раздел ресурсов версии и проявляется в исполняемом файле.
- Поддержка создания COM-серверов.
- Свойства, специфичные для Mac:
- Предварительная поддержка пакетов (см. MacOSCompatibility)
Ответ 3
Вы хотите что-то вроде py2exe.
Ответ 4
Существует несколько решений, таких как py2exe, cx-freeze или (только для Mac OS X ) py2app.
Ответ 5
Здесь - их список.
Ответ 6
Перейдите в меню Notepad ++, плагины → Python Script → Показать консоль. В недавно открывшемся окне консоли, внизу типа.....
execfile ('C:/path/to/your/python/file/code.py') # Использовать косую черту (/) вместо косой черты backwared.
Нажмите Return или нажмите кнопку Run.