跳转至

使用替代包索引

虽然 uv 默认使用官方的 Python 包索引(PyPI),但它也支持使用替代包索引。大多数替代索引需要各种形式的身份验证,这需要一些初步的设置。

Important

请阅读 uv 上有关 使用多个索引 的文档 — 默认行为与 pip 不同,以防止依赖冲突攻击,但这意味着 uv 可能无法按预期找到包的版本。

Azure Artifacts

uv 可以从 Azure DevOps Artifacts 安装包。可以使用 个人访问令牌(PAT)或通过 keyring 包进行交互式身份验证。

使用 PAT

如果有可用的 PAT(例如在 Azure 管道中使用 $(System.AccessToken)),则可以通过 "Basic" HTTP 身份验证方案提供凭据。将 PAT 包含在 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 包和 artifacts-keyring 插件对 Artifacts 进行身份验证。因为这两个包是进行 Azure Artifacts 身份验证所必需的,所以必须从 Artifacts 以外的源预先安装它们。

artifacts-keyring 插件封装了 Azure Artifacts Credential Provider 工具。该凭证提供程序支持多种身份验证模式,包括交互式登录 —— 详细的配置信息请参考 该工具的文档

uv 仅支持在 子进程模式 中使用 keyring 包。keyring 可执行文件必须在 PATH 中,即全局安装或安装在当前环境中。keyring CLI 需要在 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 进行身份验证。因为这两个包是进行 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_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 一起使用。