2010-07-30 3 views
106

Я создал virtualenv с помощью опции --no-site-packages и установил множество библиотек. Теперь я хотел бы вернуть параметр --no-site-packages и использовать также глобальные пакеты.Вернуть опцию `--no-site-packages` с virtualenv

Могу ли я это сделать без воссоздания виртуального?

Более точно:

Интересно, что именно происходит при создании virtualenv с помощью опции --no-site-packages в отличие от не использовать эту опцию.

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

+0

[Иным вопрос] (http://stackoverflow.com/questions/12433198/) был отмечен как дубликат этого, и получил ответ, который может быть интересным и здесь. – mariotomo

ответ

138

Попробуйте удалить (или переименовать) файл no-global-site-packages.txt в папке Lib под виртуальной среде.

Где venv это имя виртуальной среды, и python3.4 соответствует какой версии питона участвуют, например:

$ rm venv/lib/python3.4/no-global-site-packages.txt 

И если вы передумали и хотите поставить он обратно:

$ touch venv/lib/python3.4/no-global-site-packages.txt 
+15

Это будет сделано. Существование (или небытие) этого файла является единственным прямым эффектом флага no-site-packages. Настраиваемый сайт site.py Virtualenv ищет этот файл, чтобы решить, следует ли добавлять глобальные каталоги пакетов сайтов в sys.path. –

+0

Блестящий! Вот так! Большое спасибо за этот ответ, и спасибо Карлу Майеру за дополнительный комментарий. –

+1

это 'virtualenv/python2.7/no-global-site-packages.txt' на моем сервере ubuntu. – caesarsol

2

Попробуйте добавить символическую ссылку между /virtualenv_root/lib/ и /path/to/desired/site-packages/

+0

+1 Это работает в моей системе (openSUSE Linux 12.3, Python 2.7.3, virtualenv 1.8.4); У меня нет 'no-global-site-packages.txt' в любом месте. –

9

При использовании virtualenvwrapper управлять virtualenvs, вы можете использовать функцию оболочки toggleglobalsitepackages для переключения между использованием и не используя пакеты сайтов.

5

По крайней мере, для Python 3.5.2 есть файл pyvenv.cfg в корне каталога virtualenv. Все, что вам нужно сделать, это изменить include-system-site-packages флаг из false в true:

home = /usr/bin 
include-system-site-packages = false # <- change this to "true" 
version = 3.5.2 

 Смежные вопросы

  • Нет связанных вопросов^_^