繁体   English   中英

virtualenv可以继承另一个吗?

[英]Can a virtualenv inherit from another?

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

我必须记住案例:

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

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

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

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

将指定的目录添加到当前活动的virtualenv的Python路径中。

所以如果我有两个virtualenvENV1ENV2 ,我想让ENV2访问ENV1的包,那么我需要:

  1. 激活ENV2

    workon ENV2

  2. 使用add2virtualenv添加ENV1的site-packages目录:

    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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM