Какие части виртуального пространства необходимо изменить, чтобы переместить его?

Итак, у меня есть программа Python со смешным количеством аддонов/пакетов. Я хотел бы иметь возможность распространять программу в ее virtualenv, чтобы пакеты были в комплекте. Тем не менее, программа предназначена для Windows, а "перемещаемая" функция virtualenvs не поддерживается в Windows (а также остается экспериментальной).

Итак, я смотрю либо на запись script, либо просто написание инструкций, чтобы вручную изменить абсолютные имена путей, чтобы переместить virtualenv.

Мой вопрос в том, что кто-нибудь знает, где все, что мне нужно, искать абсолютные имена путей в virtualenv. Я новичок в упаковке Python. Activ.bat script содержит абсолютные имена путей, но у отдельных пакетов есть абсолютные пути, жестко закодированные в их установки?

В разделе "Создание среды смещения" объясняется, почему виртуальный диск нельзя просто перемещать, но не перечисляет места, содержащие абсолютный путь имена.

Ответ 1

Вместо того, чтобы пытаться сделать это вручную, вам лучше использовать параметр freeze для pip для создания файла требований. Теперь вы можете восстановить всю свою виртуальную виртуальную машину с помощью одной команды.

В старых virtualenv:

pip freeze > stable-req.txt

На новом:

pip install -r stable-req.txt

Ответ 2

Для каталога вашей виртуальной среды {ENV} выполните следующие действия

  • Выполнить $ virtualenv --relocatable {ENV}
  • Изменить {ENV}/bin/activate, используя vim или редактор по вашему выбору
  • Изменить VIRTUAL_ENV (вокруг строки ~ 42!), чтобы соответствовать новой папке

Итак, если вы хотите написать script, вы можете экспортировать переменную оболочки VIRTUAL_ENV или выполнить динамическое изменение в /bin/activate.

Вот как я установил мой.

# env/bin/activate
BIN_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
# virtual env is at ./env
ENV_DIR=`dirname $BIN_DIR`
VIRTUAL_ENV=$ENV_DIR
export VIRTUAL_ENV

Ответ 3

virtualenv-tools - это script, чтобы обновить существующее виртуальное место после его перемещения. Хотя это не помогает в Windows, это может быть полезно для других.

Он обновляет:

  • скрипты активации virtualenv
  • строки shebang в скриптах в каталоге virtualenv bin/
  • абсолютные пути, хранящиеся в файлах .pyc
  • символические ссылки в любом каталоге local/