如何保护自己免受包装消失的影响?

时间:2013-04-23 07:09:18

标签: python virtualenv pip

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

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

用几句话来说,pip开始提示用户/密码,这很快就会很痛苦(所有自动化工具都会永远挂起......)。从今天起,它就失败了。

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

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

谢谢! 灵光

1 个答案:

答案 0 :(得分:1)

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