python-3.x 如何用麻绳将新版本的项目上传到PyPI?

wnrlj8wa  于 2023-02-26  发布在  Python
关注(0)|答案(7)|浏览(117)

我已经上传了我的Python包到PyPI。但现在我做了我的包的新版本,需要上传它。我试图取得相同的进展,我没有当第一次上传包。但给予我这个错误:

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

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

5lwkijsr

5lwkijsr1#

PyPI不允许重用分发文件名(项目名+版本号+分发类型)。
这确保了给定项目的给定发布版本的给定发行版将始终解析为相同的文件,并且不会在某一天被项目维护者或恶意方偷偷更改(它只能被删除)。
您需要将版本号更改为之前没有上传到PyPI的版本号。
您没有提到如何上传发行版,但如果您使用的是twine,也可能是您试图重新上传之前上传的发行版。要解决此问题,您可以执行以下操作:

$ twine upload --skip-existing dist/*
8yparm6h

8yparm6h2#

可能会由于以下原因导致该错误:

  • 未更改setup.py中的版本
  • 我没有删除你以前的dist文件

解决方案:

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

如@dustin所述,同名的dist文件不能再次上传。

niknxzdl

niknxzdl3#

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

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/*
nvbavucw

nvbavucw4#

您需要更改版本号。

zengzsys

zengzsys5#

运行之前,请确保dist目录为空

python setup.py sdist
t5fffqht

t5fffqht6#

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

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

这与其它提出的解决方案相比具有优点,并且确切地说:

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

我相信有更有效的解决办法,但这对我来说足够简单。

g6baxovj

g6baxovj7#

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

python setup.py bdist_wheel

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

相关问题