【问题标题】:Python - Cannot publish module to PyPIPython - 无法将模块发布到 PyPI
【发布时间】:2018-07-15 17:31:48
【问题描述】:

我的问题是我无法将我的模块上传到 PyPI。当我跑步时 twine upload dist/easy-email-0.0.1.tar.gz 我明白了 HTTPError: 400 Client Error: 'Easy-email-0.0.1.tar.gz' is an invalid value for Download-URL. Error: Invalid URI see https://packaging.python.org/specifications/core-metadata for url: https://test.pypi.org/legacy/

我做错了什么?

这里是 setup.py:

from distutils.core import setup

setup(
    name = 'easy-email',
    packages = ['easy-email'],
    version = '0.0.1',  # Ideally should be same as your GitHub release tag varsion
    description = 'Send emails in python!',
    author = 'myname',
    author_email = 'myemail',
    url = 'https://github.com/marmadukeandbob05/Easy-Email/',
    download_url = 'Easy-Email-0.0.1.tar.gz',
    keywords = ['email', 'gmail'],
    classifiers = [],
)

【问题讨论】:

  • 也许就像人们可以投票一样,至少也可以用评论来解释原因。

标签: python python-3.x pypi


【解决方案1】:

您的download_url 无效,它不是有效的 URL。请注意,在将安装存档上传到 PyPI 时,您根本不需要设置该值,因为下载 URL 在 PyPI 上

仅当您要在其他地方托管您的包时设置download_url,而不是在 PyPI 上。您必须使用完整的 URL,因此以 http://https://pipeasy_install 开头的 URL 将按照来自 PyPI 的 URL 查找安装存档。您只能使用twine register 来注册元数据,而根本不使用twine upload

错误消息将您链接到documentation for the field:

包含 URL 的字符串,可以从中下载此版本的分发版。

大胆强调我的; Easy-Email-0.0.1.tar.gz 不是 URL。它只是一个文件名。

当您希望人们从不同的主机(例如 GitHub)下载存档时,您可以使用它。例如,如果requests project 希望人们从 GitHub 而不是从 PyPI 服务器下载版本,他们可以使用 download_url = 'https://github.com/requests/requests/archive/v2.18.4.tar.gz',然后只使用 twine register 将元数据放在 PyPI 上。

【讨论】:

  • 但是我没有指定下载地址。我该怎么做?
  • @marmadukeandbob:您确实使用download_url = 'Easy-Email-0.0.1.tar.gz', 指定了下载 URL。完全删除它,重建你的包 (python setup.py sdist bdist_wheel),然后重新注册并上传。
  • 当我运行“python setup.py sdist bdist_wheel”时出现错误。它适用于“python setup.py sdist”。但是当我尝试使用 twine 上传时,我得到“服务器响应(410):消失”错误
  • @marmadukeandbob:我举了一个重建命令的例子;如果您收到错误,您没有安装车轮支撑,那很好。你先尝试twine register 了吗?
  • 我如何使用它?
猜你喜欢
  • 2019-10-01
  • 1970-01-01
  • 2014-11-27
  • 1970-01-01
  • 2019-09-14
  • 1970-01-01
  • 1970-01-01
  • 2020-12-14
  • 2022-10-04
相关资源
最近更新 更多