`versioneer`与`PyPI`包装兼容吗?

时间:2019-04-03 17:40:20

标签: python pypi

我一直在使用versioneer来控制my package的版本,目前正在尝试将其上传到PyPI。但是,运行时出现以下错误

python -m twine upload --repository-url https://test.pypi.org/legacy/ dist/*

Uploading distributions to https://test.pypi.org/legacy/
Uploading xomega-0.0.1+25.g7c6a208.dirty-py3-none-any.whl
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████| 11.5k/11.5k [00:00<00:00, 22.5kB/s]
NOTE: Try --verbose to see response content.
HTTPError: 400 Client Error: '0.0.1+25.g7c6a208.dirty' is an invalid value for Version. Error: Can't use PEP 440 local versions. See https://packaging.python.org/specifications/core-metadata for url: https://test.pypi.org/legacy/

versioneer自动分配的版本号是否与PyPI不兼容,或者我在这里缺少基本内容吗?

2 个答案:

答案 0 :(得分:3)

版本0.0.1+25.g7c6a208.dirty不是PyPI的有效版本号。它表明您的分发是在您的存储库在0.0.1标记之后提交25次提交,具有唯一的修订ID g7c6a208且为“脏”(未提交更改)时进行的。

您需要先进行更改并制作一个0.0.2标签以获取有效的版本号,然后才能上传到PyPI。

答案 1 :(得分:1)

您可以将“pep440-pre”样式用于 versioneer 而不是 setup.cfg 中的“pep440”。这应该为您生成类似 0.0.1.post0.dev25 的内容,可用于上传到 pypi。