3月23日,Python软件基金会发布通知:Pip今年会有一个重大变化,依赖解析规则会产生变化。希望各位及时了解详情,及时适配,以免对线上系统产生影响。
会发生什么变化?
对依赖关系的检查会更严格,依赖关系不兼容直接拒绝安装!
举个例子,假设我们的 requirements.txt 中有下面两条规则:
six<1.12virtualenv==20.0.2
它们其实是互相冲突的,因为 virtualenv==20.0.2 依赖于 six>=1.12.0,<2 ,所以无论安装哪个版本的six,都无法同时满足这两条规则。
这个时候,使用 pip 安装它们会发生什么?
当前的 pip 中,会安装 six==1.11,尽管这样 virtualenv 有一定几率就无法正常工作了。
在未来的 pip 中,会直接报错拒绝安装!
所以,如果你的部署流程依赖于 pip,更新后可能部署流就会失败。
这个变化什么时候会来?
新版本的 pip 2020年下半年就会到来,对,就是半年之后。而且五月可能就可以开始测试了。
如何提前准备?
现在,你可以运行 pip check 检查自己的 Python 包是否有冲突的问题。如果没有,恭喜你,本次升级可能对你没有影响。如果不幸地,你跟小编一样,确实碰到了冲突,你可能需要等到五月份,来提前测试新的 pip 版本了。下面是小编的 pip check 结果,这说明有版本冲突的问题。
如果你有兴趣帮助 pip 团队完善 pip,可以参与他们发起的有关 pip 使用方式的调研。这个调研能够帮助他们更好地理解 pip 的使用场景,从而在升级时更好地照顾到 pip 的用户。这个调研的地址是:
http://www.ei8fdb.org/thoughts/2020/03/pip-ux-study-recruitment/
如何求助?
如果运行 pip check 后,你发现存在依赖冲突,但是完全不知道该如何解决,你可以通过 issue tracker 反馈或者通过 IRC 跟他们即时沟通。联系地址在下面链接中:
https://pip.pypa.io/en/stable/
消息来源
https://pyfound.blogspot.com/2020/03/new-pip-resolver-to-roll-out-this-year.html