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

Virtualenv: указание, какие пакеты использовать для общесистемного vs local

Возможный дубликат:
Сделать virtualenv наследовать определенные пакеты из ваших глобальных пакетов сайтов

Есть ли способ создать virtualenv для Python и указать, какие пакеты должны использоваться (унаследованы) из общесистемной установки и какие из них следует игнорировать из общесистемного установка?

В частности, скажем, например, что существует система - общая установка:

numpy
scipy
matplotlib

Я хотел бы создать виртуальную среду таким образом, чтобы:

  • Использует общесистемную установку numpy и scipy
  • Игнорирует общесистемный matplotlib и позволяет мне устанавливать/обновлять мои собственные версииpip -U matplotlib).

Возможно ли это?

4b9b3361

Ответ 1

Самый простой способ сделать это - создать virtualenv, который включает пакеты системного сайта, а затем установить нужные вам версии:

$ virtualenv --system-site-packages foo
$ source foo/bin/activate
$ pip install Django==1.4.3

После этого вы также можете очистить виртуальный диск, проверив вывод pip freeze и удалив ненужные пакеты. (удаление системных пакетов с помощью pip uninstall больше не работает работа для более новых версий virtualenv)

Другим способом было бы создать чистый virtualenv и связать нужные вам части:

$ virtualenv --no-site-packages foo
$ source foo/bin/activate
$ ln -s /usr/lib/python2.7/dist-packages/PIL* $VIRTUAL_ENV/lib/python*/site-packages

Команды могут немного отличаться от не-unixish-окружения. Пути также зависят от используемой вами системы. Чтобы узнать путь к библиотеке, запустите оболочку python (без активированного virtualenv), импортируйте модуль и проверьте module_name.__path__. например.

Python 2.7.3 (default, Sep 26 2012, 21:51:14) 
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import PIL
>>> PIL.__path__
['/usr/lib/python2.7/dist-packages/PIL']