Python setuptools scm使用.dev生成版本,无法上传到PyPi



setuptools scm何时/为什么将.devXXX附加到其生成的版本?

在我维护的几个repos中,setuptools scm开始生成版本号后面附加.devXXX的版本。这会导致问题,因为此标记对于上载到PyPi无效。

第一次发生这种情况时,我创建了一个变通方法,我认为这是因为我在git中做了一些不恰当的事情。这只是发生在一个非常简单的项目中,这真的很令人沮丧。

我以前使用的解决方法是通过use_scm_version劫持版本控制。这不太理想,我想了解根本原因。

提前感谢您提供的任何帮助!

文档在这里:https://github.com/pypa/setuptools_scm/#importing-在setuppy 中

# setup.py
def _clean_version():
"""
This function was required because scm was generating developer versions on
GitHub Action.
"""
def get_version(version):
return str(version.tag)
def empty(version):
return ''
return {'local_scheme': get_version, 'version_scheme': empty}

setuptools.setup(
...
use_scm_version=_clean_version,
...
)

这样做是因为未标记的提交的版本值计算如下:

X.Y.(Z+1(-devN gSHA

其中:

X.Y.Z是在您实际所在的提交之上/之上最近的标记提交。

N是在上一个X.Y.Z 之后的提交次数

SHA是您当前提交的SHA。

-dev*版本被认为是他们所遵循的测试版/预版本。

因此CCD_ 3被认为是CCD_。

最新更新