我试图找到是否有一种方法来获取已安装的包和版本,并检查它是否满足需求规范
例如,如果我有包pip==20.0.2,我希望程序执行以下操作:
CheckReqSpec("pip==20.0.2", "pip>=19.0.0") -> True
CheckReqSpec("pip==20.0.2", "pip<=20.1") -> True
CheckReqSpec("pip==20.0.2", "pip~=20.0.0") -> True
CheckReqSpec("pip==20.0.2", "pip>20.0.2") -> False
我发现pkg_resources.extern.packaging有version.parse,这对于比较大于或小于的不同版本很有用,但是需求规范可能非常复杂,并且有一些像~=这样的运算符不是标准的数学运算符
setuptools文档有以下示例:
PickyThing<1.6,>1.9,!=1.9.6,<2.0a0,==2.4c1
有没有一个现成的方法来做这个检查,或者一个简单的方法来做我自己的
编辑: 特别是当规范作为变量输入时,~=是很困难的。*在版本需求方面也很难搞清楚,因为
version.parse("20.0.*") == version.parse("20.0.1") # False
version.parse("20.0.*") < version.parse("20.0.0") # True
version.parse("20.0.*") < version.parse("20.1.1") # True
version.parse("20.0.*") >= version.parse("20.0.0") # False
使用setuptools解析说明符集,然后使用
in
检查成员资格:发布后工作。必须明确选择预发布版本
我建议^{} ,它可以像以下那样使用:
也许^{}
相关问题 更多 >
编程相关推荐