setup.cfg的metadata下version配置被pip忽略该如何解决
问题根因
你使用PyScaffold生成的项目默认启用了setuptools-scm版本管理插件,该插件的版本读取优先级高于setup.cfg中手动配置的version字段,会自动从Git仓库的标签和提交记录生成版本号,因此你手动填写的版本配置会被直接覆盖。
解决方案
你可以根据自己的开发需求选择以下任意一种方案解决:
- 方案1:保留
setuptools-scm(PyScaffold推荐最佳实践)
不需要在setup.cfg中手动填写version配置,直接给当前Git仓库打对应版本的标签即可,执行命令:
之后重新执行git tag v5.1.1pip install -e .,setuptools-scm会自动读取标签作为包的版本号。 - 方案2:关闭
setuptools-scm,手动指定版本
如果你不需要自动版本生成功能,按以下步骤修改配置即可:- 打开项目根目录的
pyproject.toml文件:- 删掉
[build-system]配置中requires列表里的setuptools-scm依赖 - 删掉整个
[tool.setuptools_scm]配置区段
- 删掉
- 打开
setup.cfg文件:- 删掉
[metadata]区段中的dynamic = ["version"]配置(如果存在) - 保留你手动填写的
version = 5.1.1配置
改完所有配置后重新执行pip install -e .,即可正常读取你手动设置的版本号。
- 删掉
- 打开项目根目录的
验证方式
安装完成后执行pip show test-package,返回结果中的Version字段会显示你配置的对应版本,确认配置生效即可。
内容的提问来源于stack exchange,提问作者Pablo
相关产品推荐
相关产品推荐

