无法将包上传到 PyPI:410 Gone

Posted

技术标签:

【中文标题】无法将包上传到 PyPI:410 Gone【英文标题】:Failed to upload packages to PyPI: 410 Gone 【发布时间】:2017-12-25 16:52:41 【问题描述】:

pypi.python.org has been migrated to pypi.org 之后,尝试像往常一样使用命令将包上传到 PyPI 时出错:

python2.7 setup.py sdist upload

错误信息是:

Upload failed (410): Gone (This API has been deprecated and removed from legacy PyPI in favor of using the APIs available in the new PyPI.org implementation of PyPI (located at https://pypi.org/). For more information about migrating your use of this API to PyPI.org, please see https://packaging.python.org/guides/migrating-to-pypi-org/#uploading. For more information about the sunsetting of this API, please see https://mail.python.org/pipermail/distutils-sig/2017-June/030766.html)

我查看了消息中提到的解决方案,然后用谷歌搜索了一下。不幸的是,我找到的解决方案不起作用,包括更新我的本地 ~/.pypirc 文件。像这样:

[distutils]
index-servers =
    pypi

[pypi]
repository:https://pypi.python.org/pypi   or  repository:https://upload.pypi.org/legacy/
username:yourusername
password:yourpassword

我仍然收到相同的错误消息。我该怎么办?

【问题讨论】:

【参考方案1】:

升级到最新的 pip 和 setuptools;安装麻线:

pip install -U pip setuptools twine

编辑~/.pypirc并注释掉或删除repository

[pypi]
#repository:https://pypi.python.org/pypi

使用 twine 从包含模块源、setup.py 和其他文件的文件夹中将模块上传到 pypi:

python setup.py sdist
twine upload dist/*

见https://packaging.python.org/guides/migrating-to-pypi-org/#uploading

【讨论】:

谢谢,解决了我的问题。另外,我需要先运行python setup.py sdist twine upload dist/* 之前创建一些dist/*。我希望这个答案对其他人有用。 谢谢大家,当我遇到类似问题时,这让我大部分时间都得到了解决。一个额外的细节是,您可能需要确保您的 Python 版本为 2.7.9+,否则(对我而言)twine upload... 命令会因 SSL/TLS 错误而失败。 最好不要指定存储库,让 twine 决定上传到哪里。 来自官方指南:“你应该编辑你的 ~/.pypirc 以便它删除任何明确提及的 URL。” 在 Python 2.7.10 (macOS) 上出现此错误:OSError: [Errno 2] No such file or directory: '/Library/Python/2.7/site-packages/setuptools-20.3.1-py2.7.egg'【参考方案2】:

如果您正在寻找旧版解决方案,请尝试将您的 ~/.pypirc 文件更新为此

[distutils]
index-servers =
    pypi

[pypi]
repository: https://upload.pypi.org/legacy/
username: username
password: password

正在运行

python setup.py sdist upload -r pypi

不确定它是否会立即生效。因为我做了很多事情以使其正常工作,例如

同时更新 python 和 python3(我仍然在 2.7.12 和 3.5.2 上) 安装twine(如果您的系统还没有) 根据phd 的建议更新pipsetuptoolstwine pip3 install -U pip setuptools twine 也可能有帮助

【讨论】:

旧的测试站点的新网址是什么:testpypi.python.org/pypi 在这里找到它:packaging.python.org/guides/migrating-to-pypi-org/#uploading python setup.py registerpython setup.py upload 是 deprecated。不要不要使用它们。 是的,我现在也在使用麻绳。我想我是在过渡期发布的【参考方案3】:

我建议使用麻线。

只需安装它:

pip install twine

然后简单地做:

twine upload dist/*

注意:从项目的根目录执行此操作

【讨论】:

以上是关于无法将包上传到 PyPI:410 Gone的主要内容,如果未能解决你的问题,请参考以下文章

pip安装的模块无法导入

无法使用 Twine 上传到 PyPi

无法将项目上传到 pypi

无法使用 twine 将二进制***上传到 pypi

如何将原始 Python 包上传到 PyPI?

将包提交到 PyPI 时如何解决“.pypic 中找不到 PyPI-test”的问题?