跳转至

认证

Git 认证

uv 允许从 Git 安装软件包,并支持以下用于对私有仓库进行认证的方案。

使用 SSH: - git+ssh://git@<hostname>/...(例如,git+ssh://git@github.com/astral-sh/uv) - git+ssh://git@<host>/...(例如,git+ssh://git@github.com-key-2/astral-sh/uv

有关如何配置 SSH 的更多详细信息,请参阅GitHub SSH 文档

使用密码或令牌: - git+https://<user>:<token>@<hostname>/...(例如,git+https://git:github_pat_asdf@github.com/astral-sh/uv) - git+https://<token>@<hostname>/...(例如,git+https://github_pat_asdf@github.com/astral-sh/uv) - git+https://<user>@<hostname>/...(例如,git+https://git@github.com/astral-sh/uv

使用 GitHub 个人访问令牌时,用户名是任意的。GitHub 不支持直接使用密码登录,不过其他主机可能支持。如果提供的用户名没有凭证,系统将提示您输入凭证。

如果 URL 中没有凭证且需要进行认证,系统将查询Git 凭证助手

HTTP 身份验证

uv 在查询包注册中心时支持通过 HTTP 提供凭证。

身份验证信息可来自以下来源,按优先级顺序排列: - URL,例如 https://<user>:<password>@<hostname>/... - .netrc 配置文件 - 密钥环 提供程序(需要手动启用)

如果为单个索引 URL 或网络位置(协议、主机和端口)找到身份验证信息,它将在命令执行期间被缓存,并用于对该索引或网络位置的其他查询。uv 的不同调用之间不会缓存身份验证信息。

默认情况下启用 .netrc 身份验证,如果定义了 NETRC 环境变量,将使用该变量指定的文件,否则将回退到 ~/.netrc

要启用基于密钥环的身份验证,可在命令行中给 uv 传递 --keyring-provider subprocess 参数,或设置 UV_KEYRING_PROVIDER=subprocess

身份验证可用于以下上下文中指定的主机: - [index] - index-url - extra-index-url - find-links - package @ https://...

有关索引 URL 身份验证的详细信息,请参阅 索引身份验证文档

有关与 pip 的差异的详细信息,请参阅 pip 兼容性指南

与替代包索引进行身份验证

有关与流行的替代 Python 包索引进行身份验证的详细信息,请参阅 替代索引集成指南

自定义 CA 证书

默认情况下,uv 会从捆绑的 webpki-roots 库加载证书。webpki-roots 是一组来自 Mozilla 的可靠信任根,将它们包含在 uv 中可提高可移植性和性能(特别是在 macOS 上,读取系统信任存储会导致明显延迟)。

然而,在某些情况下,你可能希望使用平台的原生证书存储,尤其是当你依赖公司信任根(例如,用于强制代理)且该信任根已包含在系统证书存储中时。要指示 uv 使用系统信任存储,请使用 --native-tls 命令行标志运行 uv,或将 UV_NATIVE_TLS 环境变量设置为 true

如果需要证书的直接路径(例如在持续集成中),将 SSL_CERT_FILE 环境变量设置为证书捆绑包的路径,以指示 uv 使用该文件而不是系统信任存储。

如果需要客户端证书身份验证(mTLS),将 SSL_CLIENT_CERT 环境变量设置为包含证书及随后私钥的 PEM 格式文件的路径。

最后,如果你使用的设置需要信任自签名证书或以其他方式禁用证书验证,可以通过 allow-insecure-host 配置选项指示 uv 允许与特定主机建立不安全连接。例如,在 pyproject.toml 中添加以下内容将允许与 example.com 建立不安全连接:

[tool.uv]
allow-insecure-host = ["example.com"]

allow-insecure-host 预期接收主机名(例如 localhost)或主机名 - 端口对(例如 localhost:8080),并且仅适用于 HTTPS 连接,因为 HTTP 连接本质上就是不安全的。

谨慎使用 allow-insecure-host,并且仅在受信任的环境中使用,因为由于缺乏证书验证,它可能会使你面临安全风险。