【问题标题】:400 ERROR: Invalid URI when uploading new PyPI package (twine)400 错误:上传新的 PyPI 包(twine)时 URI 无效
【发布时间】:2017-12-11 05:13:51
【问题描述】:

我按照官方文档上传包到 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 dist\brad_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,但没有看到我应该使用的替代网站!

这是我的第一个包,我在互联网上的其他地方没有看到这个错误。有什么想法:这是怎么回事?

【问题讨论】:

  • 我刚刚访问了页面 upload.pypi.org/legacy 并收到错误 404(不存在)。你用的是什么版本的twine?可能你需要创建.pypirc?…
  • 嗨@phd - 感谢您的评论。我已经更新了我使用的 twine 和 .pypirc 数据的版本。我还注意到该网站不存在 - 它是 PyPI API 推荐的 URL。我在其他地方没有看到这个问题,这让我想知道这是否是 PyPI 最近的问题。想法?
  • 不知道。我在 15 年前创建了.pypirc,并且一直在愉快地使用python setup.py upload。 :-)))
  • @phd :) - 我遇到了与python setup.py sdist bdist_wheel upload 相同的问题。我刚刚运行该代码并收到此错误:Submitting dist\brad_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
  • .pypirc 中没有https://upload.pypi.org/legacy/,是吗? PS。一年前我改用麻线,到目前为止没有问题。

标签: python pypi twine


【解决方案1】:

太棒了。我还在Twine's GitHub page 上将此作为问题发布。

事实证明,setup.py 文件中的 URL 应该对应于托管代码的位置(这是有道理的)。我把我的个人网站作为 URL,我猜 Warehouse 的单元测试拒绝了我……它现在已经上传了。

再次感谢@phd!

【讨论】:

    【解决方案2】:

    就在几分钟前尝试上传包时遇到了这个问题。 :-) 修复:将pipsetuptoolstwine 升级到最新版本:

    pip install -U pip setuptools twine
    

    ~/.pypirc 中删除或注释掉存储库:

    [distutils]
    index-servers =
        pypi
    
    [pypi]
    #repository: 
    username: …
    

    twine upload 现在可以使用了!

    【讨论】:

    • 嗨@phd - 非常感谢您继续提供帮助! :) 当我在我的 Mac 和 Win7 机器上运行 pip install -U pip setuptools twine 时,我收到此错误:OSError: [Errno 2] No such file or directory: '/Users/bradaallen/anaconda/lib/python2.7/site-packages/setuptools-27.2.0-py2.7.egg' 如果我分别升级 3 个软件包,我 不会 收到此错误 - 但我也被告知每个包都是“最新的”,我得到的错误与我原来的帖子一样。想法?
    • /Users/bradaallen/anaconda/lib/python2.7/site-packages/ 中搜索*.pth 文件并删除(注释掉)提及setu‌​ptools-27.2.0-py2.7.‌​egg。 setu‌​ptools 27 现在有点老了。
    【解决方案3】:

    当您在 setup.py 中使用 README.md 文件作为 long_description 时,PyPI 中不支持某些字符串,例如“.*”。因此,需要将它们删除并重新构建 WHL 文件并通过麻线再次上传。

    【讨论】:

    • 你的回答有点不清楚。 谁上传的文件是什么意思?您能否更具体地了解一些字符?如果您可以edit 您的回答稍微澄清一下英语,并包括一个导致问题的README.md 示例,这将使这个答案更加有用,谢谢。
    猜你喜欢
    • 1970-01-01
    • 2015-04-26
    • 2017-03-18
    • 2018-03-18
    • 1970-01-01
    • 2020-09-24
    • 2020-03-17
    • 2017-03-29
    • 2020-06-30
    相关资源
    最近更新 更多