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

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

Ответы [ 3 ]

11 голосов
/ 03 августа 2010

Если вы используете virtualenvwrapper и вы можете использовать сценарий postmkvirtualenv для автоматического создания символических ссылок в новом каталоге virtualenv sitepackages.

#!/bin/sh
cdsitepackages
ln -s /path/to/system/site-packages/package-name
cdvirtualenv
8 голосов
/ 25 апреля 2013

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

add2virtualenv /path/to/package

чтобы добавить запись в файл PTH _virtualenv_path_extensions.pth в ваших пакетах сайта virtualenv.

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

0 голосов
/ 07 мая 2010

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

...