Подтвердить что ты не робот

Включая глобальный пакет в virtualenv, который был создан с -no-site-пакетами

Обычно я предпочитаю создавать virtualenvs с опцией -no-site-packages для большей изоляции, а также потому, что глобальные пакеты python по умолчанию включают довольно много пакетов, и обычно большинство из них не нужны. Однако я все же хочу сохранить несколько пакетов в глобальном масштабе, например PIL или psycopg2. Есть ли хороший способ включить их в virtualenv, который также может быть легко автоматизирован?

4b9b3361

Ответ 1

Если вы используете virtualenvwrapper, и вы можете использовать postmkvirtualenv script, чтобы автоматически создавать символические ссылки в новом каталоге virtualenv sitepackages.

#!/bin/sh
cdsitepackages
ln -s /path/to/system/site-packages/package-name
cdvirtualenv

Ответ 2

Если вы используете virtualenvwrapper, команда оболочки add2virtualenv должна присутствовать в активном virtualenv. Использование:

add2virtualenv /path/to/package

чтобы добавить запись в файл PTH _virtualenv_path_extensions.pth в ваши виртуальные сайты-пакеты.

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

Ответ 3

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