首页 > 解决方案 > 将 python 包发布到 pypi 时自动递增版本

问题描述

为了在我将新发行版上传到 PyPi 时获得正确的版本,我setup.py询问了 PyPi 当前版本是什么(参见下面的函数),将其递增,并将其用作调用的version参数setuptools.setup

果然,pip 安装有效,但从源代码安装无效(无论如何,我们不希望安装的版本号不正确)。

我可以编写一个部署脚本来执行增量并setup使用版本号调用(并setup.py改用当前版本)。

但我猜有一个最佳实践工具可以做我想做的事情吗?

def current_pypi_version(package: str) -> str:
    req = urllib.request.Request(f'https://pypi.python.org/pypi/{package}/json')
    r = urllib.request.urlopen(req)
    if r.code == 200:
        t = json.loads(r.read())
        releases = t.get('releases', [])
        if releases:
            return sorted(releases)[-1]

标签: pythonpypipython-packaging

解决方案


有一些第三方工具可以满足您的需求。例如,您可以尝试http://pypi.org/p/bump(免责声明,我是作者/维护者),或者您可以尝试使用https://pypi.org/p/setuptools-scm/生成版本来自 SCM 元数据。


推荐阅读