我的问题是我无法将模块上传到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 = [],
)
答案 0 :(得分:1)
您的download_url
无效,不是有效的网址。请注意,在将安装存档上传到PyPI时,您根本不需要设置该值 ,因为下载URL是上的 。
仅在您将包托管在其他地方时设置download_url
,而不是在PyPI上设置http://
。您必须使用完整的网址,因此以https://
或pip
,easy_install
或twine 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上。