Python setuptools-scm 生成带有 .dev 的版本,无法上传到 PyPi

问题描述 投票:0回答:2

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

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

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

我之前使用的解决方法是通过

use_scm_version
劫持版本控制。这不太理想,我想了解根本原因。

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

文档在这里: https://github.com/pypa/setuptools_scm/#importing-in-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,
    ...
)
python continuous-integration setuptools setuptools-scm
2个回答
1
投票

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

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

地点:

X.Y.Z 是您实际所在位置之上的最新标记提交。

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

SHA 是您当前提交的 SHA。

-dev*
版本被视为其所遵循的测试版/预版。

所以

X.Y.(Z+1)-devN-gSHA
被视为
X.Y.(Z+1)
的测试版/预版。


0
投票

我这样做了,但仍然不起作用,谁知道什么原因。我做的最后一件事是:

git标签v0.1.27

git推送起源v0.1.27

然后我仍然得到: dist/fibphoflow-0.1.27.dev0+g143b972.d20231019-py3-none-any.whl

相当令人沮丧

© www.soinside.com 2019 - 2024. All rights reserved.