python - 将 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]
解决方案
有一些第三方工具可以满足您的需求。例如,您可以尝试http://pypi.org/p/bump(免责声明,我是作者/维护者),或者您可以尝试使用https://pypi.org/p/setuptools-scm/生成版本来自 SCM 元数据。
推荐阅读
- php - 如何简化嵌套循环?
- ruby-on-rails - 资产管道中不存在资产“devise/sessions.css”
- javascript - 类型错误:“这是未定义的”在成员数组上使用 forEach 时
- javascript - DateTimePicker 不能禁用过去的时间吗?
- php - 如何使用 PHP 代码找到每天的某个时间间隔
- ios - 在swift 4中按下按钮时如何将json结果发送到电子邮件?
- javascript - 变量 ES5 到 ES6 的动态导出
- javascript - 将 Boostrap4 导入 angular2 CLI
- json - 在 Web UI 测试中,是否可以获得 JSON 响应?
- bash - 如何提取每个文本块并将其放入循环语句中