如何在不升级到每个上游版本的情况下使用基于virtualenv的部署方法?

时间:2010-11-22 10:04:25

标签: django virtualenv backwards-compatibility pip

上周五,我为我的Django项目构建了一个RPM规范。 RPM创建virtualenv,通过pip下载依赖项并将所有内容放入包中。今天,我发现BeautifulSoup 3.2已经发布。幸运的是,我已将我的BeautifulSoup版本固定在requirements.txt中,所以我发现因为构建失败。

现在一个完全不同的问题是:我如何避免将来升级? BeautifulSoup已从PyPI中删除了所有以前的版本,因此我无法下载我实际测试过的版本。 pip的下载缓存也没有帮助,因为pip总是首先尝试检查PyPI。

你能推荐一些东西来避免这种情况吗?

2 个答案:

答案 0 :(得分:2)

首先,这是一种不寻常的情况。我从未见过另一个软件包以BeautifulSoup的方式删除所有旧版本。我认为这可能是用户敌对行为,除非是在严重安全修复的情况下。

也就是说,如果你想要一个使用pip的可靠构建过程,你真的需要镜像你在本地所依赖的所有软件包。做起来并不难;你可以使用pip的--download选项(或你现有的pip缓存)获取所有的包tar包,然后将它们转储到索引的web服务目录中,并在你的需求文件中使用--find-links指向那里(加上--no-index告诉它不要使用PyPI)。

答案 1 :(得分:0)

仍然可以找到有问题的文件:只提供直接网址而不是包名:

http://www.crummy.com/software/BeautifulSoup/download/3.x/3.0.8.tar.gz

例如。