대체 패키지 인덱스 사용하기¶
uv는 기본적으로 공식 Python Package Index(PyPI)를 사용하지만, 다른 패키지 인덱스도 지원한다. 대부분의 대체 인덱스는 다양한 형태의 인증이 필요하며, 이를 위해 초기 설정이 요구된다.
Important
여러 인덱스 사용하기에 대한 문서를 꼭 읽어보자. uv의 기본 동작은 pip와 다르며, 이는 의존성 혼동 공격을 방지하기 위한 조치다. 하지만 이로 인해 uv가 예상과 다른 버전의 패키지를 찾지 못할 수 있다.
Azure Artifacts¶
uv는 Azure DevOps Artifacts에서 패키지를 설치할 수 있다. Personal Access Token (PAT)을 사용하거나 keyring
패키지를 통해 대화형으로 피드에 인증할 수 있다.
PAT 사용하기¶
PAT(Personal Access Token)를 사용할 수 있는 경우(예: Azure 파이프라인의 $(System.AccessToken)
), "Basic" HTTP 인증 방식을 통해 자격 증명을 제공할 수 있다. URL의 비밀번호 필드에 PAT를 포함한다. 사용자 이름도 반드시 포함해야 하지만, 어떤 문자열이든 상관없다.
예를 들어, $ADO_PAT
환경 변수에 토큰이 저장되어 있다면, 인덱스 URL을 다음과 같이 설정한다:
$ export UV_INDEX=https://dummy:$ADO_PAT@pkgs.dev.azure.com/{organisation}/{project}/_packaging/{feedName}/pypi/simple/
keyring
사용하기¶
PAT(개인 액세스 토큰)가 없는 경우, keyring
패키지와 artifacts-keyring
플러그인을 사용해 Artifacts에 인증할 수 있다. 이 두 패키지는 Azure Artifacts 인증에 필수적이므로, Artifacts가 아닌 다른 소스에서 미리 설치해야 한다.
artifacts-keyring
플러그인은 Azure Artifacts Credential Provider 도구를 래핑한다. 이 자격 증명 프로바이더는 대화형 로그인을 포함한 몇 가지 인증 모드를 지원한다. 구성에 대한 자세한 내용은 도구 문서를 참고한다.
uv는 keyring
패키지를 서브프로세스 모드에서만 지원한다. keyring
실행 파일은 PATH
에 있어야 하며, 전역적으로 또는 활성 환경에 설치되어야 한다. keyring
CLI는 URL에 사용자 이름이 필요하므로, 인덱스 URL에 기본 사용자 이름 VssSessionToken
을 포함해야 한다.
$ # 공개 PyPI에서 keyring과 Artifacts 플러그인 미리 설치
$ uv tool install keyring --with artifacts-keyring
$ # keyring 인증 활성화
$ export UV_KEYRING_PROVIDER=subprocess
$ # 사용자 이름을 포함한 인덱스 URL 설정
$ export UV_INDEX=https://VssSessionToken@pkgs.dev.azure.com/{organisation}/{project}/_packaging/{feedName}/pypi/simple/
Google Artifact Registry¶
uv는 Google Artifact Registry에서 패키지를 설치할 수 있다. 패스워드 인증이나 keyring
패키지를 사용해 저장소에 인증할 수 있다.
Note
이 가이드는 gcloud
CLI가 이미 설치되고 설정되어 있다고 가정한다.
비밀번호 인증¶
"Basic" HTTP 인증 방식을 통해 자격 증명을 제공할 수 있다. URL의 비밀번호 필드에 액세스 토큰을 포함시킨다. 사용자 이름은 반드시 oauth2accesstoken
이어야 하며, 그렇지 않으면 인증이 실패한다.
예를 들어, $ARTIFACT_REGISTRY_TOKEN
환경 변수에 저장된 토큰을 사용할 경우, 인덱스 URL을 다음과 같이 설정한다:
export ARTIFACT_REGISTRY_TOKEN=$(gcloud auth application-default print-access-token)
export UV_INDEX=https://oauth2accesstoken:$ARTIFACT_REGISTRY_TOKEN@{region}-python.pkg.dev/{projectId}/{repositoryName}/simple
keyring
사용하기¶
Artifact Registry에 인증하기 위해 keyring
패키지와 keyrings.google-artifactregistry-auth
플러그인을 사용할 수도 있다. 이 두 패키지는 Artifact Registry에 인증하는 데 필수적이므로, Artifact Registry 이외의 소스에서 미리 설치해야 한다.
artifacts-keyring
플러그인은 gcloud CLI를 감싸서 단기간 유효한 액세스 토큰을 생성하고, 이를 시스템 키링에 안전하게 저장하며, 토큰이 만료되면 자동으로 갱신한다.
uv는 keyring
패키지를 서브프로세스 모드에서만 지원한다. keyring
실행 파일은 PATH
에 있어야 하며, 전역적으로 설치되거나 활성 환경에 설치되어 있어야 한다. keyring
CLI는 URL에 사용자 이름이 필요하며, 이는 반드시 oauth2accesstoken
이어야 한다.
# 공개 PyPI에서 keyring과 Artifact Registry 플러그인 미리 설치
uv tool install keyring --with keyrings.google-artifactregistry-auth
# keyring 인증 활성화
export UV_KEYRING_PROVIDER=subprocess
# 사용자 이름과 함께 인덱스 URL 설정
export UV_INDEX=https://oauth2accesstoken@{region}-python.pkg.dev/{projectId}/{repositoryName}/simple
AWS CodeArtifact¶
uv는 AWS CodeArtifact에서 패키지를 설치할 수 있다.
인증 토큰은 awscli
도구를 사용해 가져올 수 있다.
Note
이 가이드는 AWS CLI가 이미 인증된 상태라고 가정한다.
먼저, CodeArtifact 리포지토리에 대한 상수를 선언한다:
export AWS_DOMAIN="<your-domain>"
export AWS_ACCOUNT_ID="<your-account-id>"
export AWS_REGION="<your-region>"
export AWS_CODEARTIFACT_REPOSITORY="<your-repository>"
그 다음, awscli
에서 토큰을 가져온다:
export AWS_CODEARTIFACT_TOKEN="$(
aws codeartifact get-authorization-token \
--domain $AWS_DOMAIN \
--domain-owner $AWS_ACCOUNT_ID \
--query authorizationToken \
--output text
)"
마지막으로, 인덱스 URL을 설정한다:
export UV_INDEX="https://aws:${AWS_CODEARTIFACT_TOKEN}@${AWS_DOMAIN}-${AWS_ACCOUNT_ID}.d.codeartifact.${AWS_REGION}.amazonaws.com/pypi/${AWS_CODEARTIFACT_REPOSITORY}/simple/"
패키지 배포하기¶
자신의 패키지를 AWS CodeArtifact에 배포하려면 배포 가이드에 설명된 대로 uv publish
를 사용할 수 있다. 이때 자격 증명과 별도로 UV_PUBLISH_URL
을 설정해야 한다:
# uv가 AWS CodeArtifact를 사용하도록 설정
export UV_PUBLISH_URL="https://${AWS_DOMAIN}-${AWS_ACCOUNT_ID}.d.codeartifact.${AWS_REGION}.amazonaws.com/pypi/${AWS_CODEARTIFACT_REPOSITORY}/"
export UV_PUBLISH_USERNAME=aws
export UV_PUBLISH_PASSWORD="$AWS_CODEARTIFACT_TOKEN"
# 패키지 배포
uv publish
기타 인덱스¶
uv는 JFrog의 Artifactory와도 호환된다.