Может ли virtualenv наследовать от другого?
Я хочу создать один virtualenv
, используя другой в качестве отправной точки, возможно ли это?
Я должен учитывать случаи:
-
Скажем, у меня есть два virtualenv
для производства и один для разработки. Для среды разработки требуются те же пакеты, что и производственная среда, но для других требуются другие, которые мне не нужны в производственной среде. Я не хочу устанавливать общие пакеты дважды.
-
Я хочу поэкспериментировать с версией разработки пакета, например matplotlib
. Версия разработки пакета имеет те же требования, что и стабильная версия. Поэтому я создаю virtualenv
под названием matplotib_stable
и устанавливаю требования и стабильную версию. Затем я создаю второй virtualenv
под названием matplotlib_dev
и использую matplotlib_stable
в качестве отправной точки (для требований matplotlib
), но затем устанавливаю версию для разработки.
Как установить из локального кэша с помощью pip?, похоже, проблема с загрузкой пакетов, но я не думаю, что это связано с изменением sys.path
,
Ответы
Ответ 1
Одним из решений является использование команды virtualenvwrapper
add2virtualenv
. Это
Добавляет указанные каталоги в путь Python для в настоящее время активный virtualenv.
Итак, если у меня есть два virtualenv
, ENV1
и ENV2
, и я хочу, чтобы ENV2
обращался к пакетам в ENV1
, тогда мне нужно:
Вышеприведенное предполагает, что $WORKON_HOME
- это расположение ваших виртуальных каталогов, и что вы используете python2.6, поэтому, очевидно, соответствующим образом настройте их.
Пока это обеспечивает доступ к пакетам, он не настраивает путь оболочки. Другими словами, скрипты, установленные в каталоге bin
, недоступны с помощью этого метода.
Ответ 2
Кажется, что для меня работает следующее. Предположим, что старая виртуальная среда, которую вы хотите наследовать, называется old
. Поскольку вы можете указать, какую версию python использовать при создании новой среды, просто выполните:
virtualenv -p path_to_venvs/old/bin/python --system-site-packages new_env