管理许多Python项目/ virtualenvs

时间:2011-06-07 15:26:48

标签: python virtualenv

在我的工作场所,我必须管理许多(目前数十个,但最终可能数百个)Python Web应用程序,可能运行各种框架,库等(所有版本都有)。到目前为止,Virtualenv一直是管理人员的救星,但我仍然希望能够更好地管理事情,特别是在管理软件包升级方面。

我想过几个场景

选项1: 使用pip为每个virtualenv中的每个项目安装所有必需的模块,根据需要单独升级每个模块。这将需要每次升级的大量时间成本,并且需要额外的文档来跟踪事物。可能会受到一些管理脚本的推动。

选项2: 在中央存储库中安装任何应用程序使用的所有库,使用符号链接轻松地为所有项目更改一次版本。轻松升级和集中管理,但放弃了使用virtualenv的一些最好的好处。

选项3: 以某种方式将上述两者混合,集中最常见的库和/或那些可能需要升级的库,并将其余库安装在每个虚拟库中。

还有其他人有类似的情况吗?处理这个问题的最佳方法是什么?

2 个答案:

答案 0 :(得分:2)

您可以考虑使用zc.buildout。设置比普通的pip / virtualenv更烦人,但它为您提供了更多的自动化机会。如果磁盘空间使用不是问题,我建议你继续为每个项目使用单独的环境,这样你就可以一次升级它们。

答案 1 :(得分:0)

我们的项目根目录中有一个requirements.pip文件,其中包含要安装pip的软件包,因此自动升级相对容易。我不确定符号链接是否可以解决问题 - 这将使得更难以升级到项目的子集。如果磁盘空间不是问题,并且您可以编写一些简单的脚本来列出和升级软件包,那么我会坚持使用virtualenv。