如何保护自己免受pip包丢失的影响?

3
我们在构建系统中广泛使用virtualenv和pip来隔离我们的Python交付内容。一切都是完全自动化的,一直运行良好,直到最近出现了一个问题:一个间接依赖项被移动到私有的bitbucket存储库中,pip开始提示输入登录名/密码。这对于持续集成工具来说是灾难性的...而且在某个时候,这个依赖项从pypi中删除了,所以我们无法再安装环境了。
简单来说,pip开始提示输入用户名/密码,这很快就变得棘手了(所有自动化工具都一直卡住...)。而且从今天开始,它干脆失败了。
我在想如何才能拥有更可靠的东西。因为我猜任何人都可以从pypi中删除一个包,所以完全依赖它是不安全的,对吧?我正在使用缓存,并认为这足够了,但显然它总是尝试连接到互联网来检查软件包是否存在。
这里推荐什么?我应该手动下载所有内容,并仅通过我的setup.py中的“dependency_links”变量引用本地路径吗?还是有更聪明的方法?
谢谢! Emmanuel

请避免发布链接,因为它们可能会在一段时间后失效,并且对用户来说重建问题非常困难。 - Cris
1个回答

1
实际上,存在更严重的危险:pip通过普通HTTP下载软件包,即使你强制使用HTTPS,它也无法检查证书是否有效(因为Python stdlib也没有这个功能)。这意味着中间人可以伪装期望的软件包,并让你轻易安装(有时需要sudo)。因此,在生产环境中,只安装已经下载并检查过的软件包是一个好主意。

1
太棒了,谢谢!最终我搭建了一个本地的pypi服务器,可以监控和维护,而且它运行良好 :-) - CanardMoussant

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接