Python 패키지 관리

이 페이지에서는 Python 패키지 및 패키지 버전을 추가, 보기, 삭제하는 방법을 설명합니다.

시작하기 전에

  1. Google Cloud CLI를 설치하고 초기화합니다.

    Python 저장소용 명령어를 실행하려면 Google Cloud CLI 버전 354.0.0 이상이 필요합니다. 명령어를 사용하여 버전을 확인할 수 있습니다.

    gcloud version
    
  2. 대상 저장소가 없으면 새 Python 패키지 저장소를 만듭니다.

  3. Python 3이 설치되어 있는지 확인합니다. 설치 안내는 Google Cloud Python 설정 튜토리얼을 참조하세요.

  4. (선택사항) gcloud 명령어의 기본값을 구성합니다.

  5. gcloud 사용자 인증 정보로 키링 인증을 사용하는 경우 사용자 계정 또는 서비스 계정으로 Google Cloud CLI에 로그인합니다.

필요한 역할

패키지를 관리하는 데 필요한 권한을 얻으려면 관리자에게 저장소에 대한 다음 IAM 역할을 부여해 달라고 요청하세요.

역할 부여에 대한 자세한 내용은 액세스 관리를 참조하세요.

커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.

패키지 추가

저장소 모드: 표준

Python 프로젝트를 빌드할 때 배포 파일은 프로젝트의 dist 하위 디렉터리에 저장됩니다. 그런 다음 Twine을 사용하여 표준 저장소에 패키지를 업로드할 수 있습니다.

패키지에는 다음 권장사항을 따르는 것이 좋습니다.

  • 특히 pip 구성에 여러 패키지 색인이 포함된 경우 비공개 패키지의 이름이 pypi.org의 패키지 이름과 일치하지 않도록 고유한 이름을 사용합니다.
  • 패키지 버전 번호에는 PEP 440에 있는 버전 식별자 사양을 사용하세요. 기본적으로 pip는 안정적인 출시 버전만 설치합니다. 이 버전은 버전 식별자 사양을 사용하여 출시 전 버전과 안정적인 버전을 구분하고, 설치할 버전의 모든 요구사항을 파싱합니다.

패키지를 추가하려면 다음 안내를 따르세요.

  1. Twine을 설치합니다.

    pip install twine
    
  2. Python 프로젝트 디렉터리로 변경합니다.

  3. 프로젝트 dist 하위 디렉터리에서 저장소에 배포 파일을 업로드합니다. 다음 명령어를 실행합니다.

    twine upload dist/*
    

    --repository-url 플래그를 사용하여 특정 저장소를 지정할 수 있습니다.

    twine upload --repository-url https://LOCATION-python.pkg.dev/PROJECT/REPOSITORY/ dist/*
    

패키지 및 버전 보기

저장소 모드: 표준, 원격

Google Cloud 콘솔 또는 gcloud를 사용하여 패키지 및 패키지 버전을 보려면 다음 안내를 따르세요.

콘솔

  1. Google Cloud Console에서 저장소 페이지를 엽니다.

    저장소 페이지 열기

  2. 저장소 목록에서 적절한 저장소를 클릭합니다.

    패키지 페이지에 저장소의 패키지가 나열됩니다.

  3. 패키지의 버전을 보려면 패키지를 클릭합니다.

gcloud

저장소의 패키지를 나열하려면 다음 명령어를 실행합니다.

gcloud artifacts packages list [--repository=REPOSITORY] [--location=LOCATION]

주소

  • REPOSITORY은 저장소 이름입니다. 기본 저장소를 구성한 경우 이 플래그를 생략하여 기본값을 사용할 수 있습니다.
  • LOCATION은 리전 또는 멀티 리전 위치입니다. 특정 위치의 저장소를 보려면 이 플래그를 사용합니다. 기본 위치를 구성한 경우 이 플래그를 생략하여 기본값을 사용할 수 있습니다.

패키지 버전을 보려면 다음 명령어를 실행합니다.

gcloud artifacts versions list --package=PACKAGE \
    [--repository=REPOSITORY] [--location=LOCATION]

각 항목의 의미는 다음과 같습니다.

  • PACKAGE는 패키지 ID이거나 패키지의 정규화된 식별자입니다.
  • REPOSITORY은 저장소 이름입니다. 기본 저장소를 구성한 경우 이 플래그를 생략하여 기본값을 사용할 수 있습니다.
  • LOCATION은 리전 또는 멀티 리전 위치입니다. 특정 위치의 저장소를 보려면 이 플래그를 사용합니다. 기본 위치를 구성한 경우 이 플래그를 생략하여 기본값을 사용할 수 있습니다.

원격 저장소의 경우 반환된 목록에 모든 직접 및 임시 종속 항목이 포함되어야 합니다.

파일 나열

저장소 모드: 표준, 원격

저장소의 파일, 지정된 패키지의 모든 버전 파일, 패키지의 특정 버전 파일을 나열할 수 있습니다.

다음 모든 명령어에 대해 --limit 플래그를 명령어에 추가하여 반환할 최대 파일 수를 설정할 수 있습니다.

기본값이 구성된 경우 기본 프로젝트, 저장소, 위치의 모든 파일을 나열하려면 다음 명령어를 실행합니다.

gcloud artifacts files list

지정된 프로젝트, 저장소, 위치의 파일을 나열하려면 다음을 실행합니다.

gcloud artifacts files list \
    --project=PROJECT \
    --repository=REPOSITORY \
    --location=LOCATION

특정 패키지의 모든 버전에 대한 파일을 나열하려면 다음을 실행합니다.

gcloud artifacts files list \
    --project=PROJECT \
    --repository=REPOSITORY \
    --location=LOCATION \
    --package=PACKAGE

특정 패키지 버전의 파일을 나열하려면 다음을 실행합니다.

gcloud artifacts files list \
    --project=PROJECT \
    --repository=REPOSITORY \
    --location=LOCATION \
    --package=PACKAGE \
    --version=VERSION

다음 값을 바꿉니다.

  • LOCATION: 저장소의 리전 또는 멀티 리전 위치입니다.
  • PROJECT: Google Cloud 프로젝트 ID 프로젝트 ID에 콜론(:)이 포함되어 있으면 도메인 범위 프로젝트를 참조하세요.
  • REPOSITORY: 이미지가 저장된 저장소의 이름입니다.
  • PACKAGE: 패키지의 이름입니다.
  • VERSION: 패키지의 버전입니다.

예시

다음 패키지 정보를 고려하세요.

  • 프로젝트: my-project
  • 저장소: my-repo
  • 저장소 위치: us-central1
  • 패키지: my-app

다음 명령어는 기본 프로젝트 내의 us-central1 위치에 있는 my-repo 저장소의 모든 파일을 나열합니다.

gcloud artifacts files list \
    --location=us-central1 \
    --repository=my-repo
다음 명령어는 패키지의 1.0 버전 파일을 나열합니다.

gcloud artifacts files list \
    --project=my-project \
    --location=us-central1 \
    --repository=my-repo \
    --package=my-app \
    --version=1.0

패키지 설치

저장소 모드: 표준, 원격, 가상

pip 명령어를 사용하여 패키지를 설치합니다.

패키지의 최신 안정화 버전을 설치하려면 다음 명령어를 실행하세요.

pip install PACKAGE

표준 저장소의 경우 저장소에서 직접 패키지를 다운로드합니다.

원격 저장소의 경우 패키지와 해당 종속 항목의 캐시된 복사본을 다운로드합니다. 캐시된 복사본이 없으면 원격 저장소가 업스트림 소스에서 패키지를 다운로드하고 캐시한 후에 개발자에게 제공합니다. 저장소의 패키지 목록을 확인하여 원격 저장소가 업스트림 소스에서 패키지를 검색했는지 확인할 수 있습니다.

가상 저장소의 경우 Artifact Registry에서 요청된 패키지의 업스트림 저장소를 검색합니다.

  • 캐시된 복사본이 없으면 업스트림 원격 저장소에서 요청된 패키지를 다운로드하고 캐시합니다. 가상 저장소는 요청된 패키지만 제공하고 저장하지 않습니다.
  • 업스트림 저장소 2개 이상에서 사용할 수 있는 버전을 요청하면 Artifact Registry에서 가상 저장소에 구성된 우선순위 설정에 따라 사용할 업스트림 저장소를 선택합니다.

예를 들어 업스트림 저장소에 대해 다음 우선순위 설정을 사용하는 가상 저장소가 있다고 가정해보세요.

  • main-repo: 우선순위가 100으로 설정됩니다.
  • secondary-repo1: 우선순위가 80으로 설정됩니다.
  • secondary-repo2: 우선순위가 80으로 설정됩니다.
  • test-repo: 우선순위가 20으로 설정됩니다.

main-repo의 우선순위 값이 가장 높으므로 가상 저장소가 항상 이를 먼저 검색합니다.

secondary-repo1secondary-repo2는 우선순위가 모두 80으로 설정됩니다. 요청된 패키지가 main-repo에 없으면 Artifact Registry가 그 다음으로 이 저장소를 검색합니다. 두 항목 모두 우선순위 값이 동일하므로, 두 항목 모두 버전을 사용할 수 있으면 Artifact Registry가 어느 저장소에서든 패키지를 제공하도록 선택할 수 있습니다.

test-repo는 우선순위 값이 가장 낮고 다른 업스트림 저장소에 없을 때만 저장된 아티팩트를 제공합니다.

추가 정보

기본적으로 pip는 안정적인 패키지 버전을 설치하고 출시 전 버전을 무시합니다. PEP 440은 출시 전 버전을 포함하여 pip 사용자가 버전 번호를 파싱하는 Python 버전 식별자 사양을 정의합니다.

pip가 설치할 패키지를 검색할 때 출시 전 버전을 포함하려면 명령어에 --pre 플래그를 사용합니다.

pip install --pre PACKAGE

필요한 버전 또는 버전 범위를 지정하려면 요구사항 지정자를 포함합니다. 명령어에 직접 버전 요구사항을 포함하거나 요구사항 파일을 사용할 수 있습니다.

예를 들어 이 명령어는 my-package의 최소 버전이 개발 버전 1.0.dev0임을 지정합니다.

pip install --pre my-package>=1.0.dev0

안정화 출시 버전은 출시 전 버전보다 최신으로 간주되므로 1.0 버전이 저장소에 있는 경우 pip는 출시 전 버전보다 1.0 버전을 선택합니다.

저장소를 지정하지 않으면 pip.conf의 pip 구성이 pip가 패키지를 검색하는 방법을 결정합니다.

  • index-url 설정으로 Artifact Registry 저장소를 구성했으며 다른 패키지 색인이 구성되어 있지 않으면 pip는 Artifact Registry 저장소에서 패키지를 검색합니다.
  • 가상 저장소를 사용하는 경우 Artifact Registry는 여러 업스트림 저장소에 요청된 패키지 버전이 있으면 업스트림 정책에 구성된 우선순위를 사용하여 패키지를 선택합니다. 패키지가 있는 두 저장소의 우선순위가 동일한 경우 Artifact Registry는 두 저장소 중 하나에서 이를 제공합니다.
  • extra-index-url 설정으로 pip를 구성했거나 여러 패키지 색인을 구성한 경우 pip는 pypi.org 및 기타 구성된 패키지 색인을 검색하여 최신 버전의 패키지를 선택합니다.

요구사항 파일에서 index-url 또는 extra-index-url 설정을 재정의할 수 있습니다. pip 명령어에서 이러한 설정에 플래그를 사용할 수도 있습니다. 예를 들어 이 명령어는 Artifact Registry 저장소로 index-url을 재정의합니다.

pip install --index-url https://us-east1-python.pkg.dev/my-project/python-repo/simple/ my-package

패키지 설치에 대한 자세한 내용은 Python 패키징 문서를 참조하세요.

패키지 및 버전 삭제

저장소 모드: 표준, 원격

패키지 및 모든 해당 버전을 삭제하거나 특정 버전을 삭제할 수 있습니다.

  • 패키지를 삭제하면 작업을 실행취소할 수 없습니다.
  • 원격 저장소의 경우 패키지의 캐시된 복사본만 삭제됩니다. 업스트림 소스는 영향을 받지 않습니다. 캐시된 패키지를 삭제하면 다음에 저장소가 동일한 패키지 버전에 대한 요청을 받을 때 Artifact Registry가 해당 패키지를 다운로드하고 다시 캐시합니다.

패키지 또는 패키지 버전을 삭제하기 전에 이에 대한 중요한 종속 항목에 대해 논의하거나 처리했는지 확인합니다.

패키지를 삭제하려면 다음 안내를 따르세요.

콘솔

  1. Google Cloud 콘솔에서 저장소 페이지를 엽니다.

    저장소 페이지 열기

  2. 저장소 목록에서 적절한 저장소를 클릭합니다.

    패키지 페이지에 저장소의 패키지가 나열됩니다.

  3. 삭제할 위젯을 선택합니다.

  4. 삭제를 클릭합니다.

  5. 확인 대화상자에서 삭제를 클릭합니다.

gcloud

다음 명령어를 실행합니다.

gcloud artifacts packages delete PACKAGE \
    [--repository=REPOSITORY] [--location=LOCATION] [--async]

각 항목의 의미는 다음과 같습니다.

  • PACKAGE는 저장소의 패키지 이름입니다.
  • REPOSITORY는 저장소 이름입니다. 기본 저장소를 구성한 경우 이 플래그를 생략하여 기본값을 사용할 수 있습니다.
  • LOCATION은 리전 또는 멀티 리전 위치입니다. 특정 위치의 저장소를 보려면 이 플래그를 사용합니다. 기본 위치를 구성한 경우 이 플래그를 생략하여 기본값을 사용할 수 있습니다.
  • --async는 진행 중인 작업이 완료되기를 기다리지 않고 즉시 반환됩니다.

패키지 버전을 삭제하려면 다음 안내를 따르세요.

콘솔

  1. Google Cloud 콘솔에서 저장소 페이지를 엽니다.

    저장소 페이지 열기

  2. 저장소 목록에서 적절한 저장소를 클릭합니다.

    패키지 페이지에 저장소의 패키지가 나열됩니다.

  3. 패키지의 버전을 보려면 패키지를 클릭합니다.

  4. 삭제할 버전을 선택합니다.

  5. 삭제를 클릭합니다.

  6. 확인 대화상자에서 삭제를 클릭합니다.

gcloud

다음 명령어를 실행합니다.

gcloud artifacts versions delete VERSION \
    --package=PACKAGE \
    [--repository=REPOSITORY] [--location=LOCATION] \
    [--async]

각 항목의 의미는 다음과 같습니다.

  • PACKAGE는 저장소의 패키지 이름입니다.
  • REPOSITORY는 저장소 이름입니다. 기본 저장소를 구성한 경우 이 플래그를 생략하여 기본값을 사용할 수 있습니다.
  • LOCATION은 리전 또는 멀티 리전 위치입니다. 특정 위치의 저장소를 보려면 이 플래그를 사용합니다. 기본 위치를 구성한 경우 이 플래그를 생략하여 기본값을 사용할 수 있습니다.
  • --async는 진행 중인 작업이 완료되기를 기다리지 않고 즉시 반환합니다.

다음 단계