Skip to content

代替パッケージインデックスの使用

uvはデフォルトで公式のPythonパッケージインデックス(PyPI)を使用しますが、代替パッケージインデックスもサポートしています。ほとんどの代替インデックスはさまざまな形式の認証を必要とし、初期設定が必要です。

Important

uvで複数のインデックスを使用するドキュメントを読んでください。デフォルトの動作は依存関係の混乱攻撃を防ぐためにpipとは異なりますが、これによりuvが期待通りにパッケージのバージョンを見つけられない場合があります。

Azure Artifacts

uvはAzure DevOps Artifactsからパッケージをインストールできます。 Personal Access Token(PAT)を使用してフィードに認証するか、keyringパッケージを使用して対話的に認証します。

PATの使用

PATが利用可能な場合(例:Azureパイプラインの$(System.AccessToken))、資格情報は「Basic」HTTP認証スキームを介して提供できます。URLのパスワードフィールドにPATを含めます。ユーザー名も含める必要がありますが、任意の文字列で構いません。

たとえば、トークンが$ADO_PAT環境変数に格納されている場合、次のようにインデックスURLを設定します:

$ export UV_EXTRA_INDEX_URL=https://dummy:$ADO_PAT@pkgs.dev.azure.com/{organisation}/{project}/_packaging/{feedName}/pypi/simple/

keyringの使用

PATが利用できない場合、keyringパッケージとthe artifacts-keyring pluginを使用してArtifactsに認証します。これらの2つのパッケージはAzure Artifactsに認証するために必要であり、Artifacts以外のソースから事前にインストールする必要があります。

artifacts-keyringプラグインはAzure Artifacts Credential Providerツールをラップします。資格情報プロバイダーは、対話的なログインを含むいくつかの異なる認証モードをサポートしています。設定に関する情報はツールのドキュメントを参照してください。

uvはsubprocessモード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_EXTRA_INDEX_URL=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_EXTRA_INDEX_URL=https://oauth2accesstoken:$ARTIFACT_REGISTRY_TOKEN@{region}-python.pkg.dev/{projectId}/{repositoryName}/simple

keyring の使用

keyring パッケージと keyrings.google-artifactregistry-auth プラグイン を使用して Artifact Registry に認証することもできます。これらの 2 つのパッケージは Artifact Registry に認証するために必要であり、Artifact Registry 以外のソースから事前にインストールする必要があります。

artifacts-keyring プラグインは gcloud CLI をラップして短期間のアクセストークンを生成し、システムの keyring に安全に保存し、期限が切れたときに更新します。

uv は subprocess モード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_EXTRA_INDEX_URL=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_EXTRA_INDEX_URL="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 とも連携することが知られています。