将新版本上传到 TestPyPi

Upload a new release to TestPyPi

tl;dr - 如何将新版本上传到 TestPyPi 项目?

描述: 我按照 Python 包用户指南中的 these instructions 将测试包导入 TestPyPi。但是,我上传的包有错误。我更正错误并尝试覆盖包,但遇到以下错误:

代码:

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

错误:

HTTPError: 400 Client Error: File already exists. See https://test.pypi.org/help/#file-name-reuse for url: https://test.pypi.org/legacy/

在堆栈溢出时,我发现一个 post 说明一个 TestPyPi 包 cannot be overwritten。但是,TestPyPi 本身表明版本发布应该是可能的。

当我在 TestPyPi 中搜索文档时,我找不到任何说明如何上传新版本包的内容。在一个区域中,我找到了发布管理的简要参考,但它是一个超链接,链接到如何安装软件包的说明,而不是更新软件包(这与我在本文第一句中引用的超链接相同 post).

如何将新版本上传到 TestPyPi 项目?

TestPyPI 甚至 PyPI 本身都具有重用文件名的能力。但是在切换到 Warehouse(PyPI 和 TestPyPI 背后的新代码)之后,他们失去了这种能力。无法重新上传相同的文件名。

增加版本,重新生成包,上传新包,新名称。

您需要在setup.py中增加版本并重新运行setup.py;例如python3 setup.py sdist bdist_wheel 或类似的。好主意 rm -rf dist build 并删除 egg-info 文件。

你不能只重新提交相同的打包名称和版本,它不会 auto-overwrite 你可以理解为什么如果你从逻辑上考虑一下,如果代码发生变化,你永远不会想要覆盖当前版本人们依赖它,因为它可能会破坏他们的实例,所以你在测试中练习,以确保你养成良好的习惯。