Help us learn about your current experience with the documentation. Take the survey.

PyPI API

  • 版本:Free, Premium, Ultimate
  • 产品:GitLab.com, GitLab Self-Managed, GitLab Dedicated

这是 PyPI 包 的 API 文档。

此 API 供 PyPI 包管理器客户端 使用,通常不建议手动调用。

有关如何从 GitLab 包仓库上传和安装 PyPI 包的说明,请参阅 PyPI 包仓库文档

这些端点不遵循标准的 API 身份验证方法。有关支持的请求头和令牌类型的详细信息,请参阅 PyPI 包仓库文档。未公开的身份验证方法将来可能会被移除。

启用 FIPS 模式时,建议使用 Twine 3.4.2 或更高版本。

从组下载包文件

下载 PyPI 包文件。simple API 通常会提供此 URL。

GET groups/:id/-/packages/pypi/files/:sha256/:file_identifier
属性 类型 必需 描述
id string yes 组的 ID 或完整路径。
sha256 string yes PyPI 包文件的 sha256 校验和。
file_identifier string yes PyPI 包文件的名称。
curl --user <username>:<personal_access_token> "https://gitlab.example.com/api/v4/groups/1/-/packages/pypi/files/5y57017232013c8ac80647f4ca153k3726f6cba62d055cd747844ed95b3c65ff/my.pypi.package-0.0.1.tar.gz"

要将输出写入文件:

curl --user <username>:<personal_access_token> "https://gitlab.example.com/api/v4/groups/1/-/packages/pypi/files/5y57017232013c8ac80647f4ca153k3726f6cba62d055cd747844ed95b3c65ff/my.pypi.package-0.0.1.tar.gz" >> my.pypi.package-0.0.1.tar.gz

这会将下载的文件写入当前目录下的 my.pypi.package-0.0.1.tar.gz

组级别 simple API 索引

以 HTML 文件形式返回组中的包列表:

GET groups/:id/-/packages/pypi/simple
属性 类型 必需 描述
id string yes 组的 ID 或完整路径。
curl --user <username>:<personal_access_token> "https://gitlab.example.com/api/v4/groups/1/-/packages/pypi/simple"

响应示例:

<!DOCTYPE html>
<html>
  <head>
    <title>Links for Group</title>
  </head>
  <body>
    <h1>Links for Group</h1>
    <a href="https://gitlab.example.com/api/v4/groups/1/-/packages/pypi/simple/my-pypi-package" data-requires-python="">my.pypi.package</a><br><a href="https://gitlab.example.com/api/v4/groups/1/-/packages/pypi/simple/package-2" data-requires-python="3.8">package_2</a><br>
  </body>
</html>

要将输出写入文件:

curl --user <username>:<personal_access_token> "https://gitlab.example.com/api/v4/groups/1/-/packages/pypi/simple" >> simple_index.html

这会将下载的文件写入当前目录下的 simple_index.html

组级别 simple API 入口点

以 HTML 文件形式返回包描述符:

GET groups/:id/-/packages/pypi/simple/:package_name
属性 类型 必需 描述
id string yes 组的 ID 或完整路径。
package_name string yes 包的名称。
curl --user <username>:<personal_access_token> "https://gitlab.example.com/api/v4/groups/1/-/packages/pypi/simple/my.pypi.package"

响应示例:

<!DOCTYPE html>
<html>
  <head>
    <title>Links for my.pypi.package</title>
  </head>
  <body>
    <h1>Links for my.pypi.package</h1>
    <a href="https://gitlab.example.com/api/v4/groups/1/-/packages/pypi/files/5y57017232013c8ac80647f4ca153k3726f6cba62d055cd747844ed95b3c65ff/my.pypi.package-0.0.1-py3-none-any.whl#sha256=5y57017232013c8ac80647f4ca153k3726f6cba62d055cd747844ed95b3c65ff" data-requires-python="&gt;=3.6">my.pypi.package-0.0.1-py3-none-any.whl</a><br><a href="https://gitlab.example.com/api/v4/groups/1/-/packages/pypi/files/9s9w01b0bcd52b709ec052084e33a5517ffca96f7728ddd9f8866a30cdf76f2/my.pypi.package-0.0.1.tar.gz#sha256=9s9w011b0bcd52b709ec052084e33a5517ffca96f7728ddd9f8866a30cdf76f2" data-requires-python="&gt;=3.6">my.pypi.package-0.0.1.tar.gz</a><br>
  </body>
</html>

要将输出写入文件:

curl --user <username>:<personal_access_token> "https://gitlab.example.com/api/v4/groups/1/-/packages/pypi/simple/my.pypi.package" >> simple.html

这会将下载的文件写入当前目录下的 simple.html

从项目下载包文件

下载 PyPI 包文件。simple API 通常会提供此 URL。

GET projects/:id/packages/pypi/files/:sha256/:file_identifier
属性 类型 必需 描述
id string yes 项目的 ID 或完整路径。
sha256 string yes PyPI 包文件的 sha256 校验和。
file_identifier string yes PyPI 包文件名。
curl --user <username>:<personal_access_token> "https://gitlab.example.com/api/v4/projects/1/packages/pypi/files/5y57017232013c8ac80647f4ca153k3726f6cba62d055cd747844ed95b3c65ff/my.pypi.package-0.0.1.tar.gz"

要将输出写入文件:

curl --user <username>:<personal_access_token> "https://gitlab.example.com/api/v4/projects/1/packages/pypi/files/5y57017232013c8ac80647f4ca153k3726f6cba62d055cd747844ed95b3c65ff/my.pypi.package-0.0.1.tar.gz" >> my.pypi.package-0.0.1.tar.gz

这会将下载的文件写入当前目录下的 my.pypi.package-0.0.1.tar.gz

项目级别 simple API 索引

以 HTML 文件形式返回项目中的包列表:

GET projects/:id/packages/pypi/simple
属性 类型 必需 描述
id string yes 项目的 ID 或完整路径。
curl --user <username>:<personal_access_token> "https://gitlab.example.com/api/v4/projects/1/packages/pypi/simple"

响应示例:

<!DOCTYPE html>
<html>
  <head>
    <title>Links for Project</title>
  </head>
  <body>
    <h1>Links for Project</h1>
    <a href="https://gitlab.example.com/api/v4/projects/1/packages/pypi/simple/my-pypi-package" data-requires-python="">my.pypi.package</a><br><a href="https://gitlab.example.com/api/v4/projects/1/packages/pypi/simple/package-2" data-requires-python="3.8">package_2</a><br>
  </body>
</html>

要将输出写入文件:

curl --user <username>:<personal_access_token> "https://gitlab.example.com/api/v4/projects/1/packages/pypi/simple" >> simple_index.html

这会将下载的文件写入当前目录下的 simple_index.html

项目级别 simple API 入口点

以 HTML 文件形式返回包描述符:

GET projects/:id/packages/pypi/simple/:package_name
属性 类型 必需 描述
id string yes 项目的 ID 或完整路径。
package_name string yes 包的名称。
curl --user <username>:<personal_access_token> "https://gitlab.example.com/api/v4/projects/1/packages/pypi/simple/my.pypi.package"

响应示例:

<!DOCTYPE html>
<html>
  <head>
    <title>Links for my.pypi.package</title>
  </head>
  <body>
    <h1>Links for my.pypi.package</h1>
    <a href="https://gitlab.example.com/api/v4/projects/1/packages/pypi/files/5y57017232013c8ac80647f4ca153k3726f6cba62d055cd747844ed95b3c65ff/my.pypi.package-0.0.1-py3-none-any.whl#sha256=5y57017232013c8ac80647f4ca153k3726f6cba62d055cd747844ed95b3c65ff" data-requires-python="&gt;=3.6">my.pypi.package-0.0.1-py3-none-any.whl</a><br><a href="https://gitlab.example.com/api/v4/projects/1/packages/pypi/files/9s9w01b0bcd52b709ec052084e33a5517ffca96f7728ddd9f8866a30cdf76f2/my.pypi.package-0.0.1.tar.gz#sha256=9s9w011b0bcd52b709ec052084e33a5517ffca96f7728ddd9f8866a30cdf76f2" data-requires-python="&gt;=3.6">my.pypi.package-0.0.1.tar.gz</a><br>
  </body>
</html>

要将输出写入文件:

curl --user <username>:<personal_access_token> "https://gitlab.example.com/api/v4/projects/1/packages/pypi/simple/my.pypi.package" >> simple.html

这会将下载的文件写入当前目录下的 simple.html

上传包

上传 PyPI 包:

POST projects/:id/packages/pypi
属性 类型 必需 描述
id string yes 项目的 ID 或完整路径。
requires_python string no PyPI 所需的 Python 版本。
curl --request POST \
     --form 'content=@path/to/my.pypi.package-0.0.1.tar.gz' \
     --form 'name=my.pypi.package' \
     --form 'version=1.3.7' \
     --user <username>:<personal_access_token> \
     "https://gitlab.example.com/api/v4/projects/1/packages/pypi"