You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中packaging.version.parse判断版本通配符匹配结果不符合预期

解答
  • 这不是packaging库的bug,属于用法错误。
  • 核心原因:

    packaging.version.parse的设计定位是解析单个符合PEP 440规范的具体版本号,不支持处理带通配符的版本范围规则。
    你传入1.2.*时,该方法会将其识别为非标准的遗留版本格式:

    • 相等判断是对比两个版本对象是否完全一致,1.2.3和1.2.*解析后的版本对象本身就不相同,所以返回False
    • 排序规则上,非标准遗留版本的优先级低于正式发布版本,所以parse('1.2.3') > parse('1.2.*')返回True,符合库本身的设计逻辑
  • 正确的版本范围校验方式:
    需要搭配packaging.specifiers.SpecifierSet实现范围匹配,示例代码如下:
    from packaging.version import parse
    from packaging.specifiers import SpecifierSet
    
    # 声明版本匹配规则
    spec = SpecifierSet("==1.2.*")
    # 校验版本是否符合范围
    print(parse("1.2.3") in spec)
    # 输出结果为 True,符合预期
    

内容的提问来源于stack exchange,提问作者Bernd Prager

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 23:45:03