PyPI API
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
이 API를 사용하여 PyPI 패키지 관리자 클라이언트와 상호작용합니다. 이 API는 PyPI 패키지 관리자 클라이언트에서 사용하며 일반적으로 수동으로 사용하기 위한 것이 아닙니다. 이 엔드포인트는 표준 API 인증 방법을 따르지 않습니다.
이 API를 사용하여 PyPI 패키지 관리자 클라이언트와 상호작용합니다.
이 API는 PyPI 패키지 관리자 클라이언트에서 사용하며 일반적으로 수동으로 사용하기 위한 것이 아닙니다.
이 엔드포인트는 표준 API 인증 방법을 따르지 않습니다. 지원되는 헤더 및 토큰 유형에 대한 자세한 내용은 PyPI 패키지 레지스트리 설명서를 참조하세요. 문서화되지 않은 인증 방법은 향후 제거될 수 있습니다.
FIPS 모드가 활성화된 경우 Twine 3.4.2 이상을 권장합니다.
그룹의 패키지 파일 다운로드#
그룹의 지정된 PyPI 패키지 파일을 다운로드합니다. 단순 API에서 일반적으로 이 URL을 제공합니다.
GET groups/:id/-/packages/pypi/files/:sha256/:file_identifier
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
id |
string | 예 | 그룹의 ID 또는 전체 경로. |
sha256 |
string | 예 | PyPI 패키지 파일의 sha256 체크섬. |
file_identifier |
string | 예 | PyPI 패키지 파일 이름. |
curl --user <username>:<personal_access_token> \
--url "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> \
--url "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에 다운로드한 파일을 씁니다.
그룹의 모든 패키지 목록#
지정된 그룹의 모든 패키지를 HTML 파일로 나열합니다.
GET groups/:id/-/packages/pypi/simple
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
id |
string | 예 | 그룹의 ID 또는 전체 경로. |
curl --user <username>:<personal_access_token> \
--url "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> \
--url "https://gitlab.example.com/api/v4/groups/1/-/packages/pypi/simple" >> simple_index.html
현재 디렉토리의 simple_index.html에 다운로드한 파일을 씁니다.
그룹의 패키지 설명자 검색#
그룹의 지정된 패키지에 대한 패키지 설명자를 HTML 파일로 검색합니다.
GET groups/:id/-/packages/pypi/simple/:package_name
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
id |
string | 예 | 그룹의 ID 또는 전체 경로. |
package_name |
string | 예 | 패키지 이름. |
curl --user <username>:<personal_access_token> \
--url "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=">=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>
</body>
</html>
파일로 출력 저장:
curl --user <username>:<personal_access_token> \
--url "https://gitlab.example.com/api/v4/groups/1/-/packages/pypi/simple/my.pypi.package" >> simple.html
현재 디렉토리의 simple.html에 다운로드한 파일을 씁니다.
프로젝트의 패키지 파일 다운로드#
프로젝트의 지정된 PyPI 패키지 파일을 다운로드합니다. 단순 API에서 일반적으로 이 URL을 제공합니다.
GET projects/:id/packages/pypi/files/:sha256/:file_identifier
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
id |
string | 예 | 프로젝트의 ID 또는 전체 경로. |
sha256 |
string | 예 | PyPI 패키지 파일 sha256 체크섬. |
file_identifier |
string | 예 | PyPI 패키지 파일 이름. |
curl --user <username>:<personal_access_token> \
--url "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> \
--url "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에 다운로드한 파일을 씁니다.
프로젝트의 모든 패키지 목록#
지정된 프로젝트의 모든 패키지를 HTML 파일로 나열합니다.
GET projects/:id/packages/pypi/simple
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
id |
string | 예 | 프로젝트의 ID 또는 전체 경로. |
curl --user <username>:<personal_access_token> \
--url "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> \
--url "https://gitlab.example.com/api/v4/projects/1/packages/pypi/simple" >> simple_index.html
현재 디렉토리의 simple_index.html에 다운로드한 파일을 씁니다.
프로젝트의 패키지 설명자 검색#
프로젝트의 지정된 패키지에 대한 패키지 설명자를 HTML 파일로 검색합니다.
GET projects/:id/packages/pypi/simple/:package_name
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
id |
string | 예 | 프로젝트의 ID 또는 전체 경로. |
package_name |
string | 예 | 패키지 이름. |
curl --user <username>:<personal_access_token> \
--url "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=">=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>
</body>
</html>
파일로 출력 저장:
curl --user <username>:<personal_access_token> \
--url "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 | 예 | 프로젝트의 ID 또는 전체 경로. |
requires_python |
string | 아니요 | PyPI 필수 버전. |
sha256_digest |
string | 아니요 | 패키지 파일의 SHA256 체크섬. 업로드에는 필수가 아니지만, 이 속성이 없으면 패키지 인덱스 URL에 필수 체크섬이 없어 pip install이 실패합니다. |
curl --request POST \
--form 'content=@path/to/my.pypi.package-0.0.1.tar.gz' \
--form "sha256_digest=$(shasum -a 256 < path/to/my.pypi.package-0.0.1.tar.gz | cut -d' ' -f1)" \
--form 'name=my.pypi.package' \
--form 'version=1.3.7' \
--user <username>:<personal_access_token> \
--url "https://gitlab.example.com/api/v4/projects/1/packages/pypi"
