3

我们在构建系统中大量使用 virtualenv 和 pip 来隔离我们的 Python 交付。一切都是完全自动化的,直到现在都运行良好。

几天前,出现了一个问题:一个间接依赖被移到了一个私有的 bitbucket 存储库,pip 开始提示输入登录名/密码。这对于持续集成工具来说是戏剧性的......并且在某些时候,从 pypi 中删除了相同的依赖项,因此我们无法再安装我们的环境。

简而言之,pip 开始提示输入用户/密码,这很快就很痛苦(所有自动化工具都永远挂起......)。从今天开始,它根本就失败了。

我想知道如何拥有更可靠的东西。我猜任何人都可以从 pypi 中删除一个包,完全依赖它是不安全的,对吧?我正在使用缓存并认为这就足够了,但显然它总是尝试连接到互联网以检查包的存在。

这里推荐什么?我应该手动下载所有内容,并且只通过 setup.py 中的变量“dependency_links”引用本地路径吗?还是有更聪明的东西?

谢谢 !伊曼纽尔

4

1 回答 1

1

实际上,还有一个更严重的危险:pip 通过纯 HTTP 下载包,即使你强制它使用 HTTPS,它也无法检查 id 证书是否有效(因为 Python stdlib 也没有该功能)。也就是说,中间的某个人可以用您可以轻松安装的东西(有时使用 sudo)来掩盖预期的包。这就是为什么在生产环境中只安装单独下载和已经检查过的包是个好主意。

于 2013-04-23T08:21:40.070 回答