一个虚拟环境可以从另一个虚拟环境继承吗?



我想创建一个virtualenv另一个作为起点,这可能吗?

我必须牢记用例:

  1. 假设我有两个virtualenv一个用于生产,一个用于开发。开发环境需要与生产环境相同的包,但它需要生产环境中我不想要的其他包。我不想安装两次通用软件包。

  2. 我想尝试一个包的开发版本,比如matplotlib。软件包的开发版本与稳定版本具有相同的要求。所以我创建了一个名为matplotib_stablevirtualenv,并安装需求和稳定版本。然后,我创建一个名为 matplotlib_dev 的第二个virtualenv并使用matplotlib_stable作为起点(用于matplotlib要求(,但随后我安装了开发版本。

如何使用 pip 从本地缓存安装? 似乎解决了下载软件包的问题,但我认为它不涉及修改sys.path

一种解决方案是使用 virtualenvwrapperadd2virtualenv 命令。这

将指定的目录添加到 Python 路径中 当前活跃的虚拟环境。

因此,如果我有两个virtualenvENV1ENV2,并且我想ENV2访问ENV1中的软件包,那么我需要:

  1. 激活ENV2

    workon ENV2

  2. 使用 add2virtualenv 添加ENV1 的站点包目录:

    add2virtualenv $WORKON_HOME/ENV1/lib/python2.6/site-packages

上面假设$WORKON_HOME是你的 virtualenv 目录的位置,并且你使用的是 python2.6,所以显然相应地调整它们。

虽然这提供了对包的访问,但它不会调整外壳路径。换句话说,使用此方法无法访问安装到 bin 目录的脚本。

相关内容