我想创建一个 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