Virtualenv в пределах одного исполняемого файла

#python #linux #virtualenv #executable

#python #linux #virtualenv #исполняемый файл

Вопрос:

В настоящее время у меня есть исполняемый файл, в котором выполняется код Python внутри zip-файла следующим образом: https://blogs.gnome.org/jamesh/2012/05/21/python-zip-files /

Самое приятное в этом то, что я выпускаю один файл, содержащий приложение. Проблемы возникают в зависимостях. Я попытался установить файлы с помощью pip в пользовательских расположениях, и когда я встраиваю их в zip, у меня всегда возникают проблемы с импортом или проблемы, которые в конечном итоге зависят от пакетов хоста.

Затем я начал изучать виртуальные среды как способ обеспечения зависимостей пакетов. Однако, похоже, что типичный рабочий процесс на целевой машине заключается в том, чтобы создать сценарий активации и запустить код в virtualenv. То, что я хотел бы сделать, это иметь один файл, содержащий скрипт Python и все его зависимости, и для пользователя, чтобы просто выполнить файл. Возможно ли это, учитывая, что интерпретатор Python фактически упакован с virtualenv? Возможно ли вызвать интерпретатор Python из zip-файла? Каков рекомендуемый подход для этого с точки зрения Python?

Ответ №1:

Вы можете создать скрипт bash, который создает виртуальную среду и также запускает скрипты python.

 !#/bin/bash
virtualenv .venv
.venv/bin/pip install <python packages>
.venv/bin/python script