【问题标题】:Upload a new release to TestPyPi将新版本上传到 TestPyPi
【发布时间】:2019-10-24 12:22:54
【问题描述】:

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/

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

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

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

【问题讨论】:

标签: python version-control package pypi


【解决方案1】:

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

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

【讨论】:

  • 当然人们依赖 pip 和版本,但为什么测试 PyPi 会出现这种情况
  • @pltrdy 可能是出于蹩脚的原因,就像在 pypi 和 testpypi 上运行相同的代码一样,因此适用相同的限制。这有点烦人,因为 testpypi 应该允许在不影响版本的情况下使用它……
【解决方案2】:

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

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

【讨论】:

  • “增加版本”听起来像是解决我问题的方法,尽管我不知道“重新生成包”是什么意思。如何提高版本,什么是包再生?
  • setup.py 中增加版本,清理dist/ 目录,运行与第一次创建发行版相同的命令。
猜你喜欢
  • 2016-08-08
  • 2019-11-24
  • 2021-11-13
  • 1970-01-01
  • 2020-11-04
  • 2017-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多