1

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

现在完全不同的事情是:我如何避免将来升级东西?BeautifulSoup 已经从 PyPI 中删除了所有以前的版本,所以我无法下载我实际测试过的版本。pip的下载缓存在这里也无济于事,因为pip总是先尝试检查 PyPI。

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

4

2 回答 2

2

首先,这是一个不寻常的情况。我从未见过另一个包像 BeautifulSoup 那样删除所有旧版本。我认为这是一种相当不利于用户的行为,除非是在严重的安全修复的情况下。

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

于 2010-11-22T14:43:36.713 回答
0

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

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

例如。

于 2011-01-07T09:54:13.867 回答