如何使用麻线将新版本的项目上传到 PyPI?



我已经将我的Python包上传到了PyPI。 但是现在我制作了新版本的软件包并需要上传它。 我试图取得与第一次上传包时相同的进度,但出现以下错误:

HTTPError: 400 客户端错误: 文件已存在。有关网址,请参阅 https://pypi.org/help/#file-name-reuse:https://upload.pypi.org/legacy

现在,如何上传新版本而没有任何错误?!

PyPI 不允许重用发行版文件名(项目名称 + 版本号 + 发行版类型(。

这确保了给定项目的给定版本的给定发行版将始终解析为同一文件,并且有一天不会被项目维护者或恶意方秘密更改(只能将其删除(。

您需要将版本号更改为以前未上传到 PyPI 的版本号。

您没有提到如何上传分配,但如果您使用的是twine,则也可能尝试重新上传以前上传的分配。要解决此问题,您可以执行以下操作:

$ twine upload --skip-existing dist/*

由于以下原因可能会收到该错误:

  • 没有在setup.py中更改您的版本
  • 没有删除您以前的 dist 文件

溶液:

  • 更改setup.py中的版本号。
  • 再次运行安装文件。python setup.py bdist_wheel.
  • 仅上传该 dist 文件或运行 twine(如果使用(。twine upload --skip-existing dist/*

如@dustin所述,同名dist文件无法再次上传。

您需要更改版本号。

该错误似乎源于以下命令:

twine upload --repository-url https://test.pypi.org/legacy/ dist/*
reusing the previous package version.

要解决此问题,请尝试以下操作:

twine upload --skip-existing --repository-url https://test.pypi.org/legacy/ 
dist/*

在运行之前确保dist目录为空

python setup.py sdist

另一种没有人提到的方法是提供显式文件名:

twine upload --repository testpypi --skip-existing dist/myProject-0.1.9-py3-none-any.whl

与其他提出的解决方案相比,这具有优势,并且准确地说:

  • 虽然更新版本号是 Twine 上传包的必要条件,但这并不妨碍程序上传dist文件夹的所有内容,包括以前上传的版本。如果您移出旧版本也没关系,但我不确定可能的影响。
  • 使用--skip-existing选项解决了上述问题,但仍会处理所有文件,因此需要时间。

我相信有更有效的解决方案,但这对我来说很简单。

如果您有旧的dist目录,请在运行前将其删除

python setup.py bdist_wheel

原因:它包含旧版本文件,这在使用麻线上传到 PyPI 时会导致问题

我在下面得到了同样的错误:

HTTPError:400 来自 https://test.pypi.org/legacy/文件的错误请求已存在。有关详细信息,请参阅 https://test.pypi.org/help/#file-name-reuse。

当我尝试使用以下命令将包上传到 TestPyPI 时:

twine upload --repository testpypi dist/*

因此,我将version"0.0.1"更改为"0.0.2"name"example_package_superkai"更改为pyproject.toml"example_package_hyperkai",如下所示,如下所示,然后删除了dist文件夹:

# "pyproject.toml"
...
[project]
...
# version = "0.0.1"
version = "0.0.2"
...

或:

# "pyproject.toml"
...
[project]
# name = "example_package_superkai"
name = "example_package_hyperkai"
...

然后,我运行了以下命令:

python -m build

最后,我可以使用以下命令将包上传到TestPyPI

twine upload --repository testpypi dist/*

相关内容

  • 没有找到相关文章

最新更新