在Python中跨不同VirtualEnvironment共享相同的版本依赖关系

在Python中跨不同VirtualEnvironment共享相同的版本依赖关系,python,virtualenv,Python,Virtualenv,让我们看一个极端的例子。假设您有3个项目,A、B、C,这些项目的包依赖项是: 项目A:A-1.3和b-2.4 项目B:a-1.3和B-2.5 项目C:a-1.5和b-2.4 使用virtualenv,我必须为project创建3个环境,并安装自己版本的软件包a和b。与其为每个项目冗余安装软件包,不如分别为a-1.3、a-1.5、b-2.4、b-2.5创建4个环境,并以模块化方式加载这些环境?例如,我们可以为项目a激活环境a-1.3和b-2.4。不幸的是,这是不可能的,或者让VirtualEnvi

让我们看一个极端的例子。假设您有3个项目,A、B、C,这些项目的包依赖项是:

项目A:A-1.3和b-2.4

项目B:a-1.3和B-2.5

项目C:a-1.5和b-2.4


使用virtualenv,我必须为project创建3个环境,并安装自己版本的软件包a和b。与其为每个项目冗余安装软件包,不如分别为a-1.3、a-1.5、b-2.4、b-2.5创建4个环境,并以模块化方式加载这些环境?例如,我们可以为项目a激活环境a-1.3和b-2.4。

不幸的是,这是不可能的,或者让VirtualEnvironment管理跨环境的共享依赖关系有些困难

但是,存在一个更重的工具来管理Python包依赖关系。buildout有一个eggs目录特性,所有下载的Python蛋都可以在同一台本地计算机上的不同构建中提取和共享

为您的项目创建buildout.cfg文件,并具有以下内容:

 [buildout]
 eggs-directory=/path/to/shared/eggs/folder
或者,您可以通过创建~/.buildout/default文件,根据每个用户进行设置


以下是的安装程序中使用的示例

如果需要修改项目a中的a-1.3,会发生什么情况?这也会影响到其他项目……问题在哪里?还是实际含义?你不是说,创造4个环境不是更好吗。。。?这是真正的问题吗?@binarysmacker:我明白你的意思。我想这是一种折衷。