PyPI API
- Tier: 基础版, 专业版, 旗舰版
- Offering: JihuLab.com, 私有化部署
这是 PyPI 软件包 的 API 文档。
此 API 由 [PyPI 软件包管理器客户端](https://pypi.org/) 使用,通常不用于手动使用。
有关如何从极狐GitLab 软件包注册表上传和安装 PyPI 软件包的说明,请参阅 PyPI 软件包注册表文档。
这些端点不遵循标准的 API 身份验证方法。有关支持的标头和令牌类型的详细信息,请参阅 [PyPI 软件包注册表文档](../../user/packages/pypi_repository/_index.md)。未记录的身份验证方法可能会在将来被删除。
当启用 [FIPS 模式](../../development/fips_gitlab.md) 时,建议使用 [Twine 3.4.2](https://twine.readthedocs.io/en/stable/changelog.html?highlight=FIPS#id28) 或更高版本。
从群组下载软件包文件
下载 PyPI 软件包文件。简单 API 通常提供此 URL。
plaintextGET groups/:id/-/packages/pypi/files/:sha256/:file_identifier
| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
| id | string | 是 | 群组的 ID 或完整路径。 |
| sha256 | string | 是 | PyPI 软件包文件的 sha256 校验和。 |
| file_identifier | string | 是 | PyPI 软件包文件的名称。 |
shellcurl --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"
将输出写入文件:
shellcurl --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。
群组级别简单 API 索引
History
- 在极狐GitLab 15.1 中引入。
返回群组中软件包的列表,以 HTML 文件的形式:
plaintextGET groups/:id/-/packages/pypi/simple
| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
| id | string | 是 | 群组的 ID 或完整路径。 |
shellcurl --user <username>:<personal_access_token> "https://gitlab.example.com/api/v4/groups/1/-/packages/pypi/simple"
示例响应:
html1<!DOCTYPE html> 2<html> 3 <head> 4 <title>Links for Group</title> 5 </head> 6 <body> 7 <h1>Links for Group</h1> 8 <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> 9 </body> 10</html>
将输出写入文件:
shellcurl --user <username>:<personal_access_token> "https://gitlab.example.com/api/v4/groups/1/-/packages/pypi/simple" >> simple_index.html
这会将下载的文件写入当前目录中的 simple_index.html。
群组级别简单 API 入口点
返回软件包描述符,以 HTML 文件的形式:
plaintextGET groups/:id/-/packages/pypi/simple/:package_name
| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
| id | string | 是 | 群组的 ID 或完整路径。 |
| package_name | string | 是 | 软件包的名称。 |
shellcurl --user <username>:<personal_access_token> "https://gitlab.example.com/api/v4/groups/1/-/packages/pypi/simple/my.pypi.package"
示例响应:
html1<!DOCTYPE html> 2<html> 3 <head> 4 <title>Links for my.pypi.package</title> 5 </head> 6 <body> 7 <h1>Links for my.pypi.package</h1> 8 <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=">=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=">=3.6">my.pypi.package-0.0.1.tar.gz</a><br> 9 </body> 10</html>
将输出写入文件:
shellcurl --user <username>:<personal_access_token> "https://gitlab.example.com/api/v4/groups/1/-/packages/pypi/simple/my.pypi.package" >> simple.html
这会将下载的文件写入当前目录中的 simple.html。
从项目中下载软件包文件
下载 PyPI 软件包文件。简单 API 通常提供此 URL。
plaintextGET projects/:id/packages/pypi/files/:sha256/:file_identifier
| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
| id | string | 是 | 项目的 ID 或完整路径。 |
| sha256 | string | 是 | PyPI 软件包文件的 sha256 校验和。 |
| file_identifier | string | 是 | PyPI 软件包文件名。 |
shellcurl --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"
将输出写入文件:
shellcurl --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。
项目级别简单 API 索引
History
- 在极狐GitLab 15.1 中引入。
返回项目中软件包的列表,以 HTML 文件的形式:
plaintextGET projects/:id/packages/pypi/simple
| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
| id | string | 是 | 项目的 ID 或完整路径。 |
shellcurl --user <username>:<personal_access_token> "https://gitlab.example.com/api/v4/projects/1/packages/pypi/simple"
示例响应:
html1<!DOCTYPE html> 2<html> 3 <head> 4 <title>Links for Project</title> 5 </head> 6 <body> 7 <h1>Links for Project</h1> 8 <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> 9 </body> 10</html>
将输出写入文件:
shellcurl --user <username>:<personal_access_token> "https://gitlab.example.com/api/v4/projects/1/packages/pypi/simple" >> simple_index.html
这会将下载的文件写入当前目录中的 simple_index.html。
项目级别简单 API 入口点
返回软件包描述符,以 HTML 文件的形式:
plaintextGET projects/:id/packages/pypi/simple/:package_name
| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
| id | string | 是 | 项目的 ID 或完整路径。 |
| package_name | string | 是 | 软件包的名称。 |
shellcurl --user <username>:<personal_access_token> "https://gitlab.example.com/api/v4/projects/1/packages/pypi/simple/my.pypi.package"
示例响应:
html1<!DOCTYPE html> 2<html> 3 <head> 4 <title>Links for my.pypi.package</title> 5 </head> 6 <body> 7 <h1>Links for my.pypi.package</h1> 8 <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=">=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=">=3.6">my.pypi.package-0.0.1.tar.gz</a><br> 9 </body> 10</html>
将输出写入文件:
shellcurl --user <username>:<personal_access_token> "https://gitlab.example.com/api/v4/projects/1/packages/pypi/simple/my.pypi.package" >> simple.html
这会将下载的文件写入当前目录中的 simple.html。
上传软件包
上传 PyPI 软件包:
plaintextPOST projects/:id/packages/pypi
| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
| id | string | 是 | 项目的 ID 或完整路径。 |
| requires_python | string | 否 | PyPI 所需的版本。 |
shell1curl --request POST \ 2 --form 'content=@path/to/my.pypi.package-0.0.1.tar.gz' \ 3 --form 'name=my.pypi.package' \ 4 --form 'version=1.3.7' \ 5 --user <username>:<personal_access_token> \ 6 "https://gitlab.example.com/api/v4/projects/1/packages/pypi"