我遵循了将软件包上传到 PyPI 的官方文档,以及 PyPI 自述文件中提供的信息,但每次都收到 HTTP 400 错误:
$ twine upload dist/*
Uploading distributions to https://upload.pypi.org/legacy/
Enter your username: bradaallen
Enter your password:
Uploading brad_nlp_helpers-0.1.1-py3-none-any.whl
HTTPError: 400 Client Error: home_page: Invalid URI for url:
https://upload.pypi.org/legacy/
我正在使用 ~/.pypirc
[distutils]
index-servers =
pypi
pypitest
[pypi]
username=bradaallen
password=[password]
[pypitest]
username=bradaallen
password=[password]
对于软件包,我正在使用twine version 1.9.1 (pkginfo: 1.4.1, requests: 2.12.4, setuptools: 27.2.0, requests-toolbelt: 0.8.0, tqdm: 4.14.0)
当我使用python setup.py sdist bdist_wheel upload
时,我遇到了同样的问题:
Submitting distbrad_nlp_helpers-0.1.1.tar.gz to
https://upload.pypi.org/legacy/ Upload failed (400): home_page: Invalid URI
error: Upload failed (400): home_page: Invalid URI
我没有指定存储库,因为这是 API 在上传时给出的建议。我在 PyPI 推荐的链接中看到404 error
,但没有看到我应该使用的替代站点!
这是我的第一个软件包,我在互联网上的其他地方没有看到此错误。有什么想法吗:这是怎么回事?
太神奇了。我也在Twine的GitHub页面上发布了这个问题。
事实证明,setup.py
文件中的 URL 应该对应于代码的托管位置(这是有道理的(。我把我的个人网站作为 URL,我想仓库的单元测试拒绝了我......现已上传。
再次感谢您@phd!
就在几分钟前尝试上传一个包并遇到了这个问题。修复:将pip
、setuptools
和twine
升级到最新版本:
pip install -U pip setuptools twine
从~/.pypirc
中删除或注释掉存储库:
[distutils]
index-servers =
pypi
[pypi]
#repository:
username: …
twine upload
现在有效!
当您运行$ twine upload dist/*
时,这意味着您正在重新部署项目目录中可用的包的所有版本。您的错误表明您的 pypi.org 帐户中已存在以前的版本0.0.1。除非从 pypi.org 帐户中删除,否则不应重新部署它。
溶液:
始终指定最新轮子在通过运行修改包代码后生成的版本
$ twine upload dist/<your-latest-whl-version>
检查您的 setup.py 文件
把网址 =">
再次构建
检查 "" src//PKG-INFO 中的 PKG-INFO
"" 主页: 如果有,请继续部署
谢谢
当您在 setup.py 中使用 README.md 文件作为long_description时,某些字符串(如".*"(在 PyPI 中不受支持。因此,需要删除它们并重建 WHL 文件,然后通过麻绳再次上传。