pip 即将更新依赖解析器(dependency resolver)

获同意部分翻译自 PSF 公告 New pip resolver to roll out this year。请参照全文获得更详尽资讯。

去年的 PSF 发文提到,pip 的开发团队正在实作一个新的解析器(resolver)。该元件预计将于今年释出。

会有什么改变

新版解析器带来的最重要改变将包括:

让安装结果更一致:这个版本将不再允许安装有内部冲突的套件组合。在目前的版本里,如果使用者在指令中指定的套件版本与另一套件的依赖冲突,pip 仍然会允许安装。

举例而言,pip install "six<1.12" "virtualenv==20.0.2" 目前会「成功」安装 six==1.11。但这是错误的行为,因为 virtualenv==20.0.2 其实指定了 six>=1.12.0,<2(宣告在这里)。新的解析器会直接拒绝这个套件组合,而不会安装任何东西。

更加严格:如果你要求 pip 安装的套件中,依赖的套件版本有冲突,将会直接被拒绝。当前版本在这个状况下会安装无法使用的组合。

这将会对 pip 的重要部分造成大规模变动,因此初步释出的版本中十分可能会有 bug。我们希望能够在所有人于生产环境中使用新版本之前,就确保能抓到这些问题。

(技术细节参见 GitHub 专案板。)

你可以如何协助

现在就可以参与使用者经验研究。任何人都可以填写问卷,或者与研究员进行视讯访谈。麻烦大家踊跃登录,并尽可能把资讯散布给更多的人知道。

在你的 Python 环境里执行 pip check(不需要新版解析器,现有的正式版即可)。这个指令会报告环境内有没有冲突的套件。如果你的环境没有冲突,新版解析器造成问题的机会就会大大降低。如果环境内有你无法解决的套件冲突,欢迎在我们的 issue tracker 或讨论区发问!这些实务经验也对解析器的开发很有帮助。

预先规划时间(预计五月前后)测试 pip 新版本。(详见事件时程)

如果你用 pip 安装软体,请试着用新版本安装。如果你的 build pipeline 用 pip 安装专案依赖的套件,试着在建置系统使用新版本。为专案增加使用新版本的 CI 建置,并报告任何问题。若过去的 pip 版本曾经遇过任何依赖解析问题,看看新版解析器有没有成功修正该问题。我们非常期待了解新解析器的技术限制,以让更多人能更顺利的升级。

若遇到任何问题,欢迎填写回报问卷。

让更多人知道!!

如果你开发的工具呼叫 pip,或用它提供了任何功能,请务必在五月测试我们释出的 beta 版本,确认新版解析器对你产生的影响。

事件时程

新版解析器预计于 2020 下半年正式释出。我们会提早释出 alpha 与 beta 版本,并让大家在 GitHub 或以 email 回报。任何回馈都欢迎!

欢迎登陆 pypi-announce mailing list 获得更多及时版本资讯与回报管道。


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章