Python - 无法将模块发布到PyPI

时间:2018-02-05 19:05:00

标签: python python-3.x pypi

我的问题是我无法将模块上传到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 = [],
)

1 个答案:

答案 0 :(得分:1)

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

仅在您将包托管在其他地方时设置download_url,而不是在PyPI上设置http://。您必须使用完整的网址,因此以https://pipeasy_installtwine register开头的网址将跟随PyPI中的该网址以查找安装存档。您只能使用twine upload注册元数据,而根本不使用Easy-Email-0.0.1.tar.gz

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

  

包含网址的字符串,可从中下载此版本的发布。

大胆强调我的; download_url = 'https://github.com/requests/requests/archive/v2.18.4.tar.gz'不是网址。它只是一个文件名。

当您希望人们从其他主机(例如GitHub)下载存档时,您可以使用此功能。例如,如果requests project希望人们从GitHub而不是从PyPI服务器下载发行版,他们可以使用twine register,然后仅使用var obj = { key1: value1, key2: value2 }; obj["key3"] = "value3"; obj["x"] = {"a","b"}; 将元数据放在PyPI上。