2011-06-07 36 views
6

在我的工作环境中,我必须管理许多(目前数十个,但最终可能有数百个)Python Web应用程序,可能运行各种框架,库等(所有版本均为各种版本)。 Virtualenv到目前为止一直在管理这个问题,但我仍然希望能够更好地管理事情,尤其是在管理软件包升级时。管理许多Python项目/ virtualenvs

我想到了几个方案

选项1:根据需要分别使用 PIP安装每个项目都需要的模块在每个virtualenv中,升级每个。这对每次升级都需要大量的时间成本,并且需要额外的文档来跟踪事情。可能由一些管理脚本提供便利。

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

选项3: 将上述两种方法混合在一起,集中最常用的库和/或可能需要升级的库,并将其余的本地安装到每个virtualenv。

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

回答

2

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

+0

看起来buildout确实为这类事情提供了一些相当不错的工具。我必须更深入地研究它,看看它是如何工作的,以实现我们的问题自动化。 – 2011-06-07 22:14:54

0

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