2.7.13 与 JFrog Artifactory 配合使用

原文链接: https://docs.astral.sh/uv/guides/integration/jfrog/

2.7.13 与 JFrog Artifactory 配合使用

uv 可以从 JFrog Artifactory 安装包,既可以使用用户名和密码,也可以使用 JWT 令牌。

要使用它,请把索引添加到你的项目:

1
2
3
4
# pyproject.toml
[[tool.uv.index]]
name = "private-registry"
url = "https://<organization>.jfrog.io/artifactory/api/pypi/<repository>/simple"

使用用户名和密码进行身份验证

1
2
$ export UV_INDEX_PRIVATE_REGISTRY_USERNAME="<username>"
$ export UV_INDEX_PRIVATE_REGISTRY_PASSWORD="<password>"

使用 JWT 令牌进行身份验证

1
2
$ export UV_INDEX_PRIVATE_REGISTRY_USERNAME=""
$ export UV_INDEX_PRIVATE_REGISTRY_PASSWORD="$JFROG_JWT_TOKEN"

注意

请把环境变量名中的 PRIVATE_REGISTRY 替换为你在 pyproject.toml 中定义的索引名称。

发布包

在索引定义中添加 publish-url:

1
2
3
4
5
# pyproject.toml
[[tool.uv.index]]
name = "private-registry"
url = "https://<organization>.jfrog.io/artifactory/api/pypi/<repository>/simple"
publish-url = "https://<organization>.jfrog.io/artifactory/api/pypi/<repository>"

重要

如果在 JFrog 中使用 --token "$JFROG_TOKEN" 或 UV_PUBLISH_TOKEN,你会收到 401 Unauthorized 错误,因为 JFrog 要求用户名为空,而使用 --token 时 uv 会把 __token__ 作为用户名传入。

要进行身份验证,请把令牌作为密码传入,并把用户名设为空字符串:

1
$ uv publish --index <index_name> -u "" -p "$JFROG_TOKEN"

你也可以设置环境变量:

1
2
3
$ export UV_PUBLISH_USERNAME=""
$ export UV_PUBLISH_PASSWORD="$JFROG_TOKEN"
$ uv publish --index private-registry

注意

发布相关的环境变量(UV_PUBLISH_USERNAME 和 UV_PUBLISH_PASSWORD)不包含索引名称。

最后修改 September 25, 2026: 更新 (221c74c33)