将新版本上传到 TestPyPi

Jwo*_*wok 4 python version-control package pypi

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

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

代码:

python3 -m twine upload --repository-url https://test.pypi.org/legacy/ dist/*
Run Code Online (Sandbox Code Playgroud)

错误:

HTTPError: 400 Client Error: File already exists. See https://test.pypi.org/help/#file-name-reuse for url: https://test.pypi.org/legacy/
Run Code Online (Sandbox Code Playgroud)

在堆栈溢出时,我发现一篇文章指出 TestPyPi 包不能被覆盖。但是,TestPyPi 本身表明版本发布应该是可能的。

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

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

phd*_*phd 8

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

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

  • 增加 `setup.py` 中的版本,清理 `dist/` 目录,运行与第一次创建发行版相同的命令。 (4认同)

jam*_*ell 8

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

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

  • 人们肯定依赖 pip 和版本,但为什么测试 PyPi 会出现这种情况 (5认同)
  • @pltrdy 可能出于蹩脚的原因,就像在 pypi 和 testpypi 上运行相同的代码一样,因此适用相同的限制。这有点烦人,因为 testpypi 应该允许在不影响版本的情况下使用它...... (2认同)