我想创建一个 virtualenv
用另一个作为起点,这可能吗?
我必须记住案例:
假设我有两个 virtualenv
一个用于生产,一个用于开发。开发环境需要与生产环境相同的软件包,但它需要生产环境中我不想要的其他软件包。我不想两次安装普通包。
我想尝试一个软件包的开发版本 matplotlib
例如。该软件包的开发版本与稳定版本具有相同的要求。所以我创建了一个 virtualenv
叫 matplotib_stable
并安装要求和稳定版本。然后我创建了第二个 virtualenv
叫 matplotlib_dev
并使用 matplotlib_stable
作为起点(对于 matplotlib
要求)但我安装了开发版本。
如何使用pip从本地缓存安装? 似乎解决了下载软件包的问题,但我认为它不涉及修改 sys.path
。
一种解决方案是使用 virtualenvwrapper
的 add2virtualenv
命令。这个
将指定的目录添加到Python的路径中
目前活跃的virtualenv。
所以,如果我有两个 virtualenv
, ENV1
和 ENV2
, 而且我要 ENV2
访问包中 ENV1
,然后我需要:
启用 ENV2
:
workon ENV2
加 ENV1
使用的site-packages目录 add2virtualenv
:
add2virtualenv $WORKON_HOME/ENV1/lib/python2.6/site-packages
以上假设 $WORKON_HOME
是你的virtualenv目录的位置,并且你正在使用python2.6,所以显然相应地调整它们。
虽然这提供了对包的访问,但它不会调整shell路径。换句话说,脚本安装到 bin
使用此方法无法访问目录。
一种解决方案是使用 virtualenvwrapper
的 add2virtualenv
命令。这个
将指定的目录添加到Python的路径中
目前活跃的virtualenv。
所以,如果我有两个 virtualenv
, ENV1
和 ENV2
, 而且我要 ENV2
访问包中 ENV1
,然后我需要:
启用 ENV2
:
workon ENV2
加 ENV1
使用的site-packages目录 add2virtualenv
:
add2virtualenv $WORKON_HOME/ENV1/lib/python2.6/site-packages
以上假设 $WORKON_HOME
是你的virtualenv目录的位置,并且你正在使用python2.6,所以显然相应地调整它们。
虽然这提供了对包的访问,但它不会调整shell路径。换句话说,脚本安装到 bin
使用此方法无法访问目录。
以下似乎对我有用。假设您要从被调用的旧虚拟环境继承 old
。由于您可以指定在创建新环境时使用哪个python版本,只需执行以下操作:
virtualenv -p path_to_venvs/old/bin/python --system-site-packages new_env