2010-05-04 10 views
16

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

+0

Связанный: [Установка некоторых пакетов с использованием virtualenv] (http://stackoverflow.com/questions/434407/) –

ответ

11

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

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

Забыл об этом вопросе, но я это сделал. –

0

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

8

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

add2virtualenv /path/to/package 

, чтобы добавить запись в файл РТН _virtualenv_path_extensions.pth в вашем virtualenv сайта-пакетах.

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

+0

Да, я согласен, что теперь это лучший способ. Я почти уверен, что он был недоступен пару лет назад. –

+0

Возможно, он недоступен. Я, конечно, большой поклонник virtualenvwrapper за небольшие полезные вещи. Конечно, вы также можете сделать это вручную, написав собственный файл PTH. – pcurry