2016-04-06 3 views
1

Недавно я начал использовать virtualenv, и это изменило мою жизнь и сделало так много вещей намного проще. Тем не менее, некоторые пакеты, которые я хотел бы получить во всех virtualenvs, и я не понял, как это сделать. Есть ли способ установить пакет для установки определенных пакетов каждый раз, когда я создаю новый virtualenv?Установите определенные пакеты во всех виртуальных объектах

ответ

0

В то время как другие ответы на этот вопрос очень ценны и информативны, я искал решение, подобное предложению @ Сергея Горностаева. Тем не менее, я на Ubuntu и устанавливаю большинство своих пакетов Python (по крайней мере, те, которые я хочу получить по всему миру) до apt. Это означает, что мои пакеты попадают в dist-packages, в то время как site-packages остается пустым, поэтому я не могу использовать решение @ Sergey. Вместо этого я использовал решение в this answer.

В принципе, я устанавливаю пакеты, которые я хочу приобрести во всех средах, по возможности apt. Затем добавить следующее (или некоторое изменение этого) на мой .bashrc:

export PYTHONPATH=/usr/lib/python2.7/dist-packages:/usr/local/lib/python2.7/dist-packages 

Таким образом, все эти пакеты доступны, а затем я могу установить indivdual пакеты sepecifc к данной виртуальной среде через pip изнутри virtualenv , Это может быть не идеальное решение, но оно отвечает моим текущим потребностям, поэтому сейчас я буду использовать.

2

От documentation: Если вы создаете виртуальные среды virtualvv --system-site-packages ENV, ваша виртуальная среда наследует пакеты от /usr/lib/python2.7/site-packages (или везде, где находится ваш каталог глобальных сайтов-пакетов).

1

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

#!/bin/sh 
virtualenv "$1" 
. "$1"/bin/activate 
pip install six # f'rinstance 

Если вы сохраните это как venvwrapper вы cound alias virtualenv=venvwrapper в вашем .bashrc или аналогичный.

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