我已将我的 Python 包上传到 PyPI。但现在我制作了我的包的新版本,需要上传它。我试图取得与第一次上传包时相同的进展。但给我这个错误:
HTTPError: 400 Client Error: File already exists. See https://pypi.org/help/#file-name-reuse for url: https://upload.pypi.org/legacy
现在,如何上传新版本没有任何错误?!
我已将我的 Python 包上传到 PyPI。但现在我制作了我的包的新版本,需要上传它。我试图取得与第一次上传包时相同的进展。但给我这个错误:
HTTPError: 400 Client Error: File already exists. See https://pypi.org/help/#file-name-reuse for url: https://upload.pypi.org/legacy
现在,如何上传新版本没有任何错误?!
PyPI 不允许重复使用分发文件名(项目名称 + 版本号 + 分发类型)。
这确保了给定项目的给定版本的给定发行版将始终解析为相同的文件,并且不能在某一天被项目维护者或恶意方偷偷更改(它只能被删除)。
您需要将版本号更改为您之前未上传到 PyPI 的版本号。
您没有提及如何上传分发,但如果您使用twine
,也有可能您正在尝试重新上传以前上传的分发。要解决此问题,您可以执行以下操作:
$ twine upload --skip-existing dist/*
由于以下原因可能会出现该错误:
setup.py
解决方案:
setup.py
。python setup.py bdist_wheel
.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
与其他提议的解决方案相比,这具有优势,并且准确地说:
dist
文件夹中的所有内容,包括以前上传的版本。如果您移出旧版本也没关系,但我不确定可能的影响。--skip-existing
option 解决了上面的问题,但是所有的文件都还在处理中,所以需要时间。我确信有更有效的解决方案,但这对我来说很简单。