Скрипт Python "автономный" - PullRequest
       39

Скрипт Python "автономный"

0 голосов
/ 16 сентября 2018

Я недавно начал писать скрипты на Python, и я все еще новичок в этом языке.

Я застрял с проблемой: мой скрипт требует, чтобы библиотека pip (и другие пакеты, которые идут с ним при использовании pip) была установлена ​​pip, чтобы скрипт работал (и некоторые папки, такие как 'database' ', где я храню файл sqlite3), и мне нужно установить скрипт на многих машинах, которые имеют разные версии Ubuntu, следовательно, разные версии Python, и я хочу, чтобы мой скрипт запускался «автономно» и не нуждался в установке / обновлять Python, pip и пакет «запросы» каждый раз, когда я устанавливаю скрипт на новую машину. Я работаю в virtualenv на моей машине, который в настоящее время настроен со всеми необходимыми пакетами для запуска сценария.

Могу ли я сделать «копию» моего virtualenv, чтобы его можно было перенести с помощью скрипта Python на другие компьютеры, включая папку с моей базой данных, без необходимости устанавливать / обновлять python и pip на каждом компьютере, вместо этого используя этот автономный версия питона? Все машины Linux.

Я уже пытался скопировать свой virtualenv в папку моего проекта, но virtualenv потерпел крах, когда попытался запустить свой скрипт, используя интерпретатор python внутри него в строке shebang, даже при использовании аргумента --relocatable, так что я предполагаю, что это не случай.

Я также пытался использовать PyInstaller, но безуспешно.

1 Ответ

0 голосов
/ 16 сентября 2018

Добро пожаловать в мир развертывания! Ответ, который вы ищете, далеко не тривиален.

Во-первых, Python - это интерпретируемый язык, который на самом деле не должен распространяться как настольное приложение. Если вы хотите создать исполняемые файлы, то для этого есть несколько библиотек, например py2exe . Тем не менее, это в лучшем случае специальные решения. Они «замораживают» весь Python вместе с вашим кодом, а затем вы отправляете все вместе.

Наилучший способ определить ваши зависимости - это файл require.txt. Вы можете создать его с помощью этой команды:

pip freeze > requirements.txt

Что это делает, проверяет все библиотеки, которые в настоящее время находятся в любой среде, в которой вы работаете, и сохраняет их в файл под названием needs.txt. В этом файле будут все необходимые библиотеки, и любой, кто получит ваш код, может просто запустить

pip install -r requirements.txt 

и он установит все зависимости.

Однако это просто заботится о зависимостях библиотеки. А как насчет версии самого Python, среды ОС и т. Д. Итак, именно здесь вам, возможно, придется начать искать такие решения, как Docker. С помощью Docker вы можете указать всю среду в Dockerfile. Затем любой пользователь на другом компьютере может запустить образы докера со всеми зависимостями. Это быстро стало де-факто способом доставки кода (на всех языках, но особенно полезно в Python).

...