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

为何setuptools_scm判定0.10.0版本早于0.9.3?

解决setuptools_scm版本排序及Git标签显示问题

问题根源

不管是setuptools_scm还是Git默认的标签排序,用的都是字符串字典序,而非语义化版本的排序规则。字符串逐字符对比时,0.10.0和0.9.3会在第三个字符处(1 vs 9)判定0.10.0更早,这和我们的语义预期不符。

解决步骤

1. 让Git按语义化版本排序标签

执行以下命令查看标签,就能得到正确的版本顺序:

git tag -l --sort='version:refname'

执行后0.10.0会排在0.9.3之后。如果你的标签带v前缀,也可以用--sort='v:refname'。

2. 配置setuptools_scm使用语义化版本规则

setuptools_scm依赖packaging库处理版本对比,只需确保配置正确:

  • 先安装packaging:
    pip install packaging
    
  • 在pyproject.toml中添加setuptools_scm配置:
    [tool.setuptools_scm]
    version_scheme = "semver"
    local_scheme = "no-local-version"
    
    这样setuptools_scm就会按照语义化版本逻辑判定0.10.0高于0.9.3。

3. 快速验证版本对比逻辑

可以用packaging库直接验证:

from packaging.version import Version

v_old = Version("0.9.3")
v_new = Version("0.10.0")
print(v_new > v_old)  # 输出True即为正确

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 06:14:54