You need to enable JavaScript to run this app. 如何在setuptools_scm中使用符合PEP440规范的Beta发布标签
优惠活动
大模型
产品
解决方案
定价
更多

如何在setuptools_scm中使用符合PEP440规范的Beta发布标签

setuptools_scm 适配PEP 440风格Beta标签的可行方案

setuptools_scm 5.0.1版本触发invalid literal for int() with base 10: '3b0'报错的核心原因,是内置默认标签解析正则未对预发布后缀做独立分组处理,会将标签中第三段的3b0整体识别为补丁版本号,直接传入整数转换逻辑触发报错。对应可落地的调整方案如下:

  • 自定义标签解析规则
    在项目pyproject.toml的tool.setuptools_scm配置块中,替换默认的tag_regex参数,将版本结构按PEP 440规范做强制分组拆分:让主版本的主、次、补丁段分别匹配纯数字内容,将a/b/rc加数字的预发布部分设为独立的可选分组,避免预发布后缀混入补丁版本的数字匹配范围。参考配置示例:
    [tool.setuptools_scm]
    tag_regex = "^v(?P<version>(?P<major>\\d+)\\.(?P<minor>\\d+)\\.(?P<patch>\\d+)(?P<pre>(a|b|rc)\\d+)?)$"
    
    调整后正则会自动识别v0.1.3b0这类标签,拆分出补丁版本为整数3,预发布标识为b0,不再触发整数转换报错。
  • 严格对齐标签命名规范
    打Git标签时不要将预发布标识插入版本号的分隔符之间,例如禁止使用v0.1.3.b0这类格式的标签——这类标签会让解析逻辑将3识别为补丁版本,孤立的b0后缀无法匹配到预发布分组,依然会触发转换错误。所有预发布标签需紧贴补丁版本号书写,符合v<主版本>.<次版本>.<补丁版本><预发布标识><序号>的格式,例如Beta标签v0.1.3b0、RC标签v0.1.3rc1。
  • 验证配置有效性
    配置完成后在项目根目录运行本地版本扫描命令,确认扫描输出的版本号与标签完全一致:当仓库存在v0.1.3b0标签时,命令输出应直接返回0.1.3b0,即代表配置生效。

注意:setuptools_scm 5.0.1原生就支持PEP 440定义的预发布版本语义,上述调整仅需修正默认正则的分组逻辑,不需要额外引入插件或修改版本发布的核心流程,调整后即可正常识别Alpha、Beta、RC全系列预发布标签。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.01 23:45:08