>我使用本指南在 PyPi 上安装了一个新软件包。
现在,我想更新包。 由于我没有找到这方面的指南,所以我尝试自己做:我将版本从"1.0.0.dev1"更新为"1.0.0.dev2"并重新安装。它不起作用:我得到了:
Uploading tee_table-1.0.0.dev1-py3-none-any.whl
HTTPError: 400 Client Error: File already exists. See https://pypi.org/help/#file-name-reuse for url: https://upload.pypi.org/legacy/
我也读过这个问题,但信息似乎已经过时了(从 2012 年开始(。
有没有一个简单的用户指南来描述如何将新版本的包上传到 PyPi?
我发现了我的问题所在 - 我没有删除 dist 文件夹中的旧文件,因此上传者尝试在新文件之前上传它们,但失败了。解决方案是:
-
删除
dist
文件夹中的所有文件。 -
更新
setup.py
文件中的版本号。 -
重新创建轮子:
python3 setup.py sdist bdist_wheel
-
重新上传新文件:
twine upload dist/*
抱歉,如果我回复太晚,但遇到了同样的问题,并找到了一种不删除现有dist文件夹的方法:
在 setup.py 中更新版本并重新创建 wheel 文件后,
twine upload --skip-existing dist/*
将跳过已经存在的发行版并上传较新的发行版
对于Windows(我在Windows 10上(,@Erel Segal-Halevi的答案不起作用。跟随对我有用。
c. 重新创建轮子:
py setup.py sdist bdist_wheel
d. 重新上传新文件:
py -m twine upload dist/*
请确保在安装程序中更改了版本: 在此处输入图像描述
,然后使用以下命令:
twine upload --skip-existing dist/*
有关参考,请参阅以下打包库教程:上传 #313。 我对是使用twine upload --repository testpypi dist*
来更新包还是twine upload --repository-url URL dist/*
更新现有包感到困惑。我不清楚有关该问题的文档。此外,我在使用 API 令牌进行身份验证时遇到了各种问题。对我有用的是以下建议:
存储库的正确 URL 是
https://upload.pypi.org/legacy/
和https://test.pypi.org/legacy/
.
因此,如果您希望使用API 令牌更新现有包:
- 将
pyproject.toml
中的项目版本从例如0.0.1
更改为0.0.2
-m build
-m twine upload --repository-url https://upload.pypi.org/legacy/ dist/*
- 在 PyPi 上生成项目范围的 API 令牌并将其用于身份验证