Skip to content

上传 API

https://upload.pypi.org/legacy/提供的 API 端点 是 Warehouse 对旧版 PyPI 上传 API 的模拟。Twine 等工具使用此端点将发行版上传到 PyPI。

路线

上传文件

重要的

PyPI 上的版本是通过一次上传一个文件的方式创建的。

新版本上传的第一个文件会创建一个该版本的发布版本,并填充其元数据。

路线:POST upload.pypi.org/legacy/

可以使用上传 API 上传工件,方法是发送multipart/form-data 包含以下字段的 POST 请求:

  • :action设置为file_upload
  • protocol_version设置为1
  • content包含要上传的文件和正确的文件名(例如my_foo_bar-4.2-cp36-cp36m-manylinux1_x86_64.whl)
  • 以下哈希摘要之一:
    • md5_digest将上传文件的 MD5 哈希值设置为 URL 安全 Base64 编码(无填充)
    • sha256_digest设置为十六进制的 SHA2-256 哈希值
    • blake2_256_digest设置为 Blake2b 256 位十六进制哈希值
  • filetype必须设置为工件的类型:bdist_wheel或sdist。
  • pyversion必须设置为Python 标签才能bdist_wheel上传,或者设置source为sdist上传。
  • metadata_version并且必须根据 核心元数据规范name进行设置。version
  • attestations可以设置为包含证明对象的 JSON 数组。如果 PyPI 无法验证提供的每个证明,则会拒绝上传。
  • 您可以设置核心元数据规范中的任何其他字段。

    所有字段名称均需改为小写,连字符需替换为下划线。此外,多用途字段(例如Classifier)需使用复数形式(例如classifiers),但以下列出的少数例外情况除外:

    元数据字段 表单字段
    Platform platform(不是 platforms)
    Supported-Platform supported_platform(不是 supported_platforms)
    License-File license_file(不是 license_files)

    警告

    必须执行上述转换。发送类似这样的表单字段Description-Content-Type不会引发错误,但会被静默忽略。