跳到内容

设置

项目元数据

build-constraint-dependencies

解析构建依赖时应用的约束。

构建约束用于限制在解析或安装期间构建包时所选构建依赖的版本。

将包包含为约束不会在构建期间触发该包的安装;相反,该包必须在项目的构建依赖图中被其他地方请求。

注意

uv lockuv syncuv run 中,uv 将仅从工作区根目录的 pyproject.toml 中读取 build-constraint-dependencies,并忽略其他工作区成员或 uv.toml 文件中的任何声明。

默认值: []

类型: list[str]

用法示例:

pyproject.toml
[tool.uv]
# Ensure that the setuptools v60.0.0 is used whenever a package has a build dependency
# on setuptools.
build-constraint-dependencies = ["setuptools==60.0.0"]

conflicts

声明冲突的(即互斥的)额外项或依赖分组集合。

当两个或多个额外项具有相互不兼容的依赖项时,声明冲突非常有用。例如,额外项 foo 可能依赖 numpy==2.0.0,而额外项 bar 依赖 numpy==2.1.0。尽管这些依赖项冲突,但如果预期用户不会同时激活 foobar,则仍然可以为该项目生成通用解析结果,尽管存在不兼容性。

通过明确此类冲突,uv 可以为项目生成通用解析结果,并考虑某些额外项和分组组合是互斥的。作为交换,如果用户尝试同时激活冲突的额外项,安装将会失败。

默认值: []

类型: list[list[dict]]

用法示例:

pyproject.toml
[tool.uv]
# Require that `package[extra1]` and `package[extra2]` are resolved
# in different forks so that they cannot conflict with one another.
conflicts = [
    [
        { extra = "extra1" },
        { extra = "extra2" },
    ]
]

# Require that the dependency groups `group1` and `group2`
# are resolved in different forks so that they cannot conflict
# with one another.
conflicts = [
    [
        { group = "group1" },
        { group = "group2" },
    ]
]

constraint-dependencies

解析项目依赖时应用的约束。

约束用于限制在解析期间所选依赖项的版本。

将包包含为约束本身不会触发该包的安装;相反,该包必须在项目的第一方或传递依赖项中的其他位置被请求。

注意

uv lockuv syncuv run 中,uv 将仅从工作区根目录的 pyproject.toml 中读取 constraint-dependencies,并忽略其他工作区成员或 uv.toml 文件中的任何声明。

默认值: []

类型: list[str]

用法示例:

pyproject.toml
[tool.uv]
# Ensure that the grpcio version is always less than 1.65, if it's requested by a
# direct or transitive dependency.
constraint-dependencies = ["grpcio<1.65"]

default-groups

默认安装的 dependency-groups 列表。

也可以是字面量 "all" 以默认启用所有分组。

默认值: ["dev"]

类型: str | list[str]

用法示例:

pyproject.toml
[tool.uv]
default-groups = ["docs"]

dependency-groups

dependency-groups 的额外设置。

目前,这只能用于向依赖分组添加 requires-python 约束(通常用于告知 uv 你的开发工具比实际项目有更高的 Python 要求)。

这不能用于定义依赖分组,请为此使用顶层的 [dependency-groups] 表。

默认值: []

类型: dict

用法示例:

pyproject.toml
[tool.uv.dependency-groups]
my-group = {requires-python = ">=3.12"}

dev-dependencies

项目的开发依赖。

开发依赖默认会在 uv runuv sync 中安装,但不会出现在项目已发布的元数据中。

不再建议使用此字段。建议使用 dependency-groups.dev 字段,这是声明开发依赖的标准方式。tool.uv.dev-dependenciesdependency-groups.dev 的内容会合并以确定 dev 依赖分组的最终需求。

默认值: []

类型: list[str]

用法示例:

pyproject.toml
[tool.uv]
dev-dependencies = ["ruff==0.5.0"]

environments

用于解析依赖的支持环境列表。

默认情况下,uv 在 uv lock 操作期间会为所有可能的环境进行解析。但是,你可以限制支持的环境集以提高性能并避免解空间中的不可满足分支。

当使用 --universal 标志调用 uv pip compile 时,这些环境也会被遵循。

默认值: []

类型: str | list[str]

用法示例:

pyproject.toml
[tool.uv]
# Resolve for macOS, but not for Linux or Windows.
environments = ["sys_platform == 'darwin'"]

exclude-dependencies

解析项目依赖时排除的依赖项。

排除用于防止包在解析期间被选中,无论它是否被任何其他包请求。当一个包被排除时,它将完全从依赖列表中省略。

将包包含为排除项将阻止其被安装,即使它是由传递依赖项所请求的。这对于移除可选依赖项或绕过具有损坏依赖项的包非常有用。

注意

uv lockuv syncuv run 中,uv 将仅从工作区根目录的 pyproject.toml 中读取 exclude-dependencies,并忽略其他工作区成员或 uv.toml 文件中的任何声明。

默认值: []

类型: list[str]

用法示例:

pyproject.toml
[tool.uv]
# Exclude Werkzeug from being installed, even if transitive dependencies request it.
exclude-dependencies = ["werkzeug"]

index

解析依赖时使用的索引。

接受符合 PEP 503(简单存储库 API)的存储库,或以相同格式布局的本地目录。

索引按定义的顺序考虑,即第一个定义的索引具有最高优先级。此外,此设置提供的索引优先级高于通过 index_urlextra_index_url 指定的任何索引。除非指定了替代的 索引策略,否则 uv 将仅考虑包含给定包的第一个索引。

如果索引被标记为 explicit = true,它将专门用于通过 [tool.uv.sources] 显式选择它的依赖项,如下所示

[[tool.uv.index]]
name = "pytorch"
url = "https://download.pytorch.org/whl/cu121"
explicit = true

[tool.uv.sources]
torch = { index = "pytorch" }

如果索引被标记为 default = true,它将被移动到优先级列表的末尾,即在解析包时具有最低优先级。此外,将索引标记为默认将禁用 PyPI 默认索引。

默认值: []

类型: dict

用法示例:

pyproject.toml
[[tool.uv.index]]
name = "pytorch"
url = "https://download.pytorch.org/whl/cu121"

managed

项目是否由 uv 托管。如果为 false,当调用 uv run 时 uv 将忽略该项目。

默认值: true

类型: bool

用法示例:

pyproject.toml
[tool.uv]
managed = false

override-dependencies

解析项目依赖时应用的覆盖。

覆盖用于强制选择包的特定版本,无论任何其他包请求什么版本,也无论选择该版本是否通常构成无效解析。

虽然约束是加性的(即它们与组成包的需求相结合),但覆盖是绝对的(即它们完全替换了任何组成包的需求)。

将包包含为覆盖本身不会触发该包的安装;相反,该包必须在项目的第一方或传递依赖项中的其他位置被请求。

注意

uv lockuv syncuv run 中,uv 将仅从工作区根目录的 pyproject.toml 中读取 override-dependencies,并忽略其他工作区成员或 uv.toml 文件中的任何声明。

默认值: []

类型: list[str]

用法示例:

pyproject.toml
[tool.uv]
# Always install Werkzeug 2.3.0, regardless of whether transitive dependencies request
# a different version.
override-dependencies = ["werkzeug==2.3.0"]

package

项目应被视为 Python 包,还是非包(“虚拟”)项目。

包以可编辑模式构建并安装到虚拟环境中,因此需要构建后端,而虚拟项目构建或安装;相反,只有它们的依赖项被包含在虚拟环境中。

创建包需要 pyproject.toml 中存在 build-system,并且项目必须遵守符合构建后端期望的结构(例如 src 布局)。

默认值: true

类型: bool

用法示例:

pyproject.toml
[tool.uv]
package = false

required-environments

对于缺乏源码分发的包,所需的平台列表。

当包没有源码分发时,它的可用性将限于其构建分发(wheels)所支持的平台。例如,如果一个包只发布了 Linux 的 wheels,那么它将无法在 macOS 或 Windows 上安装。

默认情况下,uv 要求每个包包含至少一个与指定 Python 版本兼容的 wheel。required-environments 设置可用于确保最终解析包含特定平台的 wheels,或者在没有此类 wheels 可用时失败。

虽然 environments 设置限制了 uv 解析依赖项时考虑的环境集,但 required-environments 扩展了 uv 在解析依赖项时必须支持的平台集。

例如,environments = ["sys_platform == 'darwin'"] 将限制 uv 仅为 macOS 进行解析(并忽略 Linux 和 Windows)。另一方面,required-environments = ["sys_platform == 'darwin'"]要求任何没有源码分发的包必须包含 macOS 的 wheel 才能安装。

默认值: []

类型: str | list[str]

用法示例:

pyproject.toml
[tool.uv]
# Require that the package is available on the following platforms:
required-environments = [
    # macOS on Apple Silicon (ARM)
    "sys_platform == 'darwin' and platform_machine == 'arm64'",
    # Linux on x86_64 (Intel/AMD)
    "sys_platform == 'linux' and platform_machine == 'x86_64'",
    # Windows on x86_64 (Intel/AMD)
    "sys_platform == 'win32' and platform_machine == 'AMD64'",
]

sources

解析依赖时使用的源。

tool.uv.sources 用额外的源丰富了依赖元数据,并在开发期间合并。依赖源可以是 Git 存储库、URL、本地路径或替代注册表。

更多信息请参见 依赖项

默认值: {}

类型: dict

用法示例:

pyproject.toml
[tool.uv.sources]
httpx = { git = "https://github.com/encode/httpx", tag = "0.27.0" }
pytest = { url = "https://files.pythonhosted.org/packages/6b/77/7440a06a8ead44c7757a64362dd22df5760f9b12dc5f11b6188cd2fc27a0/pytest-8.3.3-py3-none-any.whl" }
pydantic = { path = "/path/to/pydantic", editable = true }

build-backend (构建后端)

uv 构建后端 (uv_build) 的设置。

请注意,这些设置仅在使用 uv_build 后端时适用,其他构建后端(如 hatchling)有其自己的配置。

所有接受通配符的选项均使用 PEP 639 中的可移植通配符模式。

data

Wheels 的数据包含项。

每个条目都是一个目录,其内容被复制到 wheel 中匹配的目录 <name>-<version>.data/(purelib|platlib|headers|scripts|data)。安装时,此数据将移动到其目标位置,定义见 https://docs.pythonlang.cn/3.12/library/sysconfig.html#installation-paths。通常,小型数据文件通过放置在 Python 模块中包含,而不是使用数据包含。

  • scripts:安装到可执行文件的目录,在 Unix 上为 <venv>/bin,在 Windows 上为 <venv>\Scripts。当虚拟环境被激活或使用 uv run 时,此目录会被添加到 PATH 中,因此该数据类型可用于安装额外的二进制文件。考虑改用 project.scripts 获取 Python 入口点。
  • data:安装到虚拟环境根目录之上。

    警告:这可能会覆盖现有文件!

  • headers:安装到 include 目录。使用此包作为构建需求的 Python 包编译器使用 include 目录来查找额外的头文件。

  • purelibplatlib:安装到 site-packages 目录。不建议使用这两个选项。

默认值: {}

类型: dict[str, str]

用法示例:

pyproject.toml
[tool.uv.build-backend]
data = { headers = "include/headers", scripts = "bin" }

default-excludes

如果设置为 false,则不应用默认排除项。

默认排除项:__pycache__*.pyc*.pyo

默认值: true

类型: bool

用法示例:

pyproject.toml
[tool.uv.build-backend]
default-excludes = false

module-name

module-root 内的模块目录名称。

默认模块名称是包名,其中的点和短横线被替换为下划线。

包名需要是有效的 Python 标识符,且该目录需要包含一个 __init__.py。存根(stubs)包是一个例外,其名称以 -stubs 结尾,主干部分为模块名,并且包含一个 __init__.pyi 文件。

对于具有单个模块的命名空间包,路径可以是点号分隔的,例如 foo.barfoo-stubs.bar

对于具有多个模块的命名空间包,路径可以是一个列表,例如 ["foo", "bar"]。我们建议每个包使用单个模块,将多个包拆分为一个工作区。

注意,使用此选项有风险,可能会创建两个具有不同名称但具有相同模块名称的包。将此类包安装在一起会导致未定义的行为,通常会导致文件或目录树损坏。

默认值: None

类型: str | list[str]

用法示例:

pyproject.toml
[tool.uv.build-backend]
module-name = "sklearn"

module-root

包含模块目录的目录。

常见值为 src(src 布局,默认值)或空路径(平面布局)。

默认值: "src"

类型: str

用法示例:

pyproject.toml
[tool.uv.build-backend]
module-root = ""

namespace

构建命名空间包。

构建 PEP 420 隐式命名空间包,允许多于一个根 __init__.py

当命名空间包包含多个根 __init__.py 时使用此选项;对于具有单个根 __init__.py 的命名空间包,请改用带点的 module-name

要比较带点的 module-namenamespace = true,下面的第一个示例可以用 module-name = "cloud.database" 表示:有一个根 __init__.py database。在第二个示例中,我们有三个根(cloud.databasecloud.database_probilling.modules.database_pro),因此需要 namespace = true

src
└── cloud
    └── database
        ├── __init__.py
        ├── query_builder
        │   └── __init__.py
        └── sql
            ├── parser.py
            └── __init__.py
src
├── cloud
│   ├── database
│   │   ├── __init__.py
│   │   ├── query_builder
│   │   │   └── __init__.py
│   │   └── sql
│   │       ├── __init__.py
│   │       └── parser.py
│   └── database_pro
│       ├── __init__.py
│       └── query_builder.py
└── billing
    └── modules
        └── database_pro
            ├── __init__.py
            └── sql.py

默认值: false

类型: bool

用法示例:

pyproject.toml
[tool.uv.build-backend]
namespace = true

source-exclude

用于指定从源码分发中排除哪些文件和目录的通配符表达式。

这些排除项也应用于 wheels,以确保从源码树构建的 wheel 与从源码分发构建的 wheel 一致。

默认值: []

类型: list[str]

用法示例:

pyproject.toml
[tool.uv.build-backend]
source-exclude = ["*.bin"]

source-include

用于指定额外包含在源码分发中的文件和目录的通配符表达式。

pyproject.toml 和模块目录的内容始终会被包含。

默认值: []

类型: list[str]

用法示例:

pyproject.toml
[tool.uv.build-backend]
source-include = ["tests/**"]

wheel-exclude

用于指定从 wheel 中排除哪些文件和目录的通配符表达式。

默认值: []

类型: list[str]

用法示例:

pyproject.toml
[tool.uv.build-backend]
wheel-exclude = ["*.bin"]

workspace (工作区)

exclude

要从工作区成员中排除的包。如果一个包既匹配 members 又匹配 exclude,它将被排除。

支持通配符和显式路径。

有关通配符语法的更多信息,请参阅 glob 文档

默认值: []

类型: list[str]

用法示例:

pyproject.toml
[tool.uv.workspace]
exclude = ["member1", "path/to/member2", "libs/*"]

members

要包含在工作区中的包。

支持通配符和显式路径。

有关通配符语法的更多信息,请参阅 glob 文档

默认值: []

类型: list[str]

用法示例:

pyproject.toml
[tool.uv.workspace]
members = ["member1", "path/to/member2", "libs/*"]

配置

add-bounds

添加依赖项时的默认版本说明符。

当向项目添加依赖项时,如果没有提供约束或 URL,则会根据该包的最新兼容版本添加约束。默认情况下,使用下界约束,例如 >=1.2.3

当提供 --frozen 时,不执行解析,并且添加依赖项时始终不带约束。

此选项处于预览阶段,未来版本可能会更改。

默认值: "lower"

可能的值:

  • "lower": 仅限下界,例如 >=1.2.3
  • "major": 允许相同的大版本,类似于 semver 的脱字符(caret),例如 >=1.2.3, <2.0.0
  • "minor": 允许相同的次版本,类似于 semver 的波浪号(tilde),例如 >=1.2.3, <1.3.0
  • "exact": 固定确切版本,例如 ==1.2.3

用法示例:

[tool.uv]
add-bounds = "major"
add-bounds = "major"

allow-insecure-host

允许与主机建立不安全连接。

预期接收主机名(例如 localhost)、主机-端口对(例如 localhost:8080)或 URL(例如 https://)。

警告:此列表中的主机将不会对照系统的证书存储进行验证。仅在具有经过验证的源的安全网络中使用 --allow-insecure-host,因为它绕过了 SSL 验证,可能会使你面临中间人(MITM)攻击。

默认值: []

类型: list[str]

用法示例:

[tool.uv]
allow-insecure-host = ["localhost:8080"]
allow-insecure-host = ["localhost:8080"]

cache-dir

缓存目录的路径。

默认在 Linux 和 macOS 上为 $XDG_CACHE_HOME/uv$HOME/.cache/uv,在 Windows 上为 %LOCALAPPDATA%\uv\cache

默认值: None

类型: str

用法示例:

uv.toml
cache-dir = "./.uv_cache"

cache-keys

缓存项目构建时要考虑的键。

缓存键允许你指定修改时应触发重新构建的文件或目录。默认情况下,只要项目目录中的 pyproject.tomlsetup.pysetup.cfg 文件被修改,或者添加/删除了 src 目录,uv 就会重新构建项目,即

cache-keys = [{ file = "pyproject.toml" }, { file = "setup.py" }, { file = "setup.cfg" }, { dir = "src" }]

例如:如果项目使用动态元数据从 requirements.txt 文件读取其依赖项,你可以指定 cache-keys = [{ file = "requirements.txt" }, { file = "pyproject.toml" }] 以确保每当 requirements.txt 文件被修改时都会重新构建项目(除了监视 pyproject.toml 之外)。

支持通配符,遵循 glob crate 的语法。例如,要使缓存失效,每当项目目录或其任何子目录中的 .toml 文件被修改时,你可以指定 cache-keys = [{ file = "**/*.toml" }]。请注意,使用通配符可能成本高昂,因为 uv 可能需要遍历文件系统来确定是否有任何文件已更改。

缓存键还可以包含版本控制信息。例如,如果项目使用 setuptools_scm 从 Git 提交中读取其版本,你可以指定 cache-keys = [{ git = { commit = true }, { file = "pyproject.toml" }] 以将当前 Git 提交哈希包含在缓存键中(除了 pyproject.toml)。Git 标签也通过 cache-keys = [{ git = { commit = true, tags = true } }] 支持。

缓存键还可以包含环境变量。例如,如果项目依赖于 MACOSX_DEPLOYMENT_TARGET 或其他环境变量来确定其行为,你可以指定 cache-keys = [{ env = "MACOSX_DEPLOYMENT_TARGET" }] 以在环境变量更改时使缓存失效。

缓存键仅影响定义它们的 pyproject.toml 所在的项目(而不是例如影响工作区中的所有成员),并且所有路径和通配符均被解释为相对于项目目录。

默认值: [{ file = "pyproject.toml" }, { file = "setup.py" }, { file = "setup.cfg" }]

类型: list[dict]

用法示例:

[tool.uv]
cache-keys = [{ file = "pyproject.toml" }, { file = "requirements.txt" }, { git = { commit = true } }]
cache-keys = [{ file = "pyproject.toml" }, { file = "requirements.txt" }, { git = { commit = true } }]

check-url

检查索引 URL 是否存在现有文件以跳过重复上传。

此选项允许重试仅部分文件上传失败后的发布,并处理由于并行上传相同文件而导致的错误。

上传前,会对索引进行检查。如果完全相同的文件已存在于索引中,则不会上传该文件。如果在上传过程中发生错误,会再次检查索引,以处理同一文件在并行中上传了两次的情况。

具体行为将根据索引而异。上传到 PyPI 时,即使没有 --check-url,上传相同的文件也会成功,而大多数其他索引会报错。

索引必须提供支持的哈希之一(SHA-256、SHA-384 或 SHA-512)。

默认值: None

类型: str

用法示例:

[tool.uv]
check-url = "https://test.pypi.org/simple"
check-url = "https://test.pypi.org/simple"

compile-bytecode

安装后将 Python 文件编译为字节码。

默认情况下,uv 不会将 Python (.py) 文件编译为字节码 (__pycache__/*.pyc);相反,编译是在模块第一次被导入时惰性执行的。对于启动时间至关重要的用例(如 CLI 应用程序和 Docker 容器),可以启用此选项以牺牲更长的安装时间来换取更快的启动时间。

启用后,uv 将处理整个 site-packages 目录(包括当前操作未修改的包)以保持一致性。像 pip 一样,它也会忽略错误。

默认值: false

类型: bool

用法示例:

[tool.uv]
compile-bytecode = true
compile-bytecode = true

concurrent-builds

uv 在任何给定时间内将并发构建的最大源码分发数量。

默认为可用 CPU 核心数。

默认值: None

类型: int

用法示例:

[tool.uv]
concurrent-builds = 4
concurrent-builds = 4

concurrent-downloads

uv 在任何给定时间内将执行的最大并发下载数。

默认值: 50

类型: int

用法示例:

[tool.uv]
concurrent-downloads = 4
concurrent-downloads = 4

concurrent-installs

安装和解压包时使用的线程数。

默认为可用 CPU 核心数。

默认值: None

类型: int

用法示例:

[tool.uv]
concurrent-installs = 4
concurrent-installs = 4

config-settings

传递给 PEP 517 构建后端的设置,指定为 KEY=VALUE 对。

默认值: {}

类型: dict

用法示例:

[tool.uv]
config-settings = { editable_mode = "compat" }
config-settings = { editable_mode = "compat" }

config-settings-package

为特定包传递给 PEP 517 构建后端的设置,指定为 KEY=VALUE 对。

接受从包名到字符串键值对的映射。

默认值: {}

类型: dict

用法示例:

[tool.uv]
config-settings-package = { numpy = { editable_mode = "compat" } }
config-settings-package = { numpy = { editable_mode = "compat" } }

dependency-metadata

项目依赖(直接或传递)的预定义静态元数据。提供后,使解析器能够使用指定的元数据,而不是查询注册表或从源码构建相关包。

元数据应符合 Metadata 2.3 标准,尽管仅遵循以下字段

  • name: 包名称。
  • (可选)version: 包版本。如果省略,元数据将应用于该包的所有版本。
  • (可选)requires-dist: 包的依赖项(例如 werkzeug>=0.14)。
  • (可选)requires-python: 包所需的 Python 版本(例如 >=3.10)。
  • (可选)provides-extra: 包提供的额外项。

默认值: []

类型: list[dict]

用法示例:

[tool.uv]
dependency-metadata = [
    { name = "flask", version = "1.0.0", requires-dist = ["werkzeug"], requires-python = ">=3.6" },
]
dependency-metadata = [
    { name = "flask", version = "1.0.0", requires-dist = ["werkzeug"], requires-python = ">=3.6" },
]

exclude-newer

将候选包限制为在给定日期之前上传的包。

接受 RFC 3339 时间戳(例如 2006-12-02T02:07:43Z)、“友好”持续时间(例如 24 hours1 week30 days)或 ISO 8601 持续时间(例如 PT24HP7DP30D)。

持续时间不尊重本地时区的语义,并且总是解析为固定的秒数,假设一天为 24 小时(即忽略夏令时转换)。不允许使用月和年等日历单位。

默认值: None

类型: str

用法示例:

[tool.uv]
exclude-newer = "2006-12-02T02:07:43Z"
exclude-newer = "2006-12-02T02:07:43Z"

exclude-newer-package

将特定包的候选包限制为在给定日期之前上传的包。

接受 PACKAGE = "DATE" 对的字典格式,其中 DATE 是 RFC 3339 时间戳(例如 2006-12-02T02:07:43Z)、“友好”持续时间(例如 24 hours1 week30 days)或 ISO 8601 持续时间(例如 PT24HP7DP30D)。

持续时间不尊重本地时区的语义,并且总是解析为固定的秒数,假设一天为 24 小时(即忽略夏令时转换)。不允许使用月和年等日历单位。

默认值: None

类型: dict

用法示例:

[tool.uv]
exclude-newer-package = { tqdm = "2022-04-04T00:00:00Z" }
exclude-newer-package = { tqdm = "2022-04-04T00:00:00Z" }

extra-build-dependencies

包的额外构建依赖项。

这允许使用额外的包扩展项目依赖项的 PEP 517 构建环境。这对于假设存在 pip 等包且未将其声明为构建依赖项的包非常有用。

默认值: []

类型: dict

用法示例:

[tool.uv]
extra-build-dependencies = { pytest = ["setuptools"] }
extra-build-dependencies = { pytest = ["setuptools"] }

extra-build-variables

构建某些包时设置的额外环境变量。

构建指定包时,环境变量将被添加到环境中。

默认值: {}

类型: dict[str, dict[str, str]]

用法示例:

[tool.uv]
extra-build-variables = { flash-attn = { FLASH_ATTENTION_SKIP_CUDA_BUILD = "TRUE" } }
extra-build-variables = { flash-attn = { FLASH_ATTENTION_SKIP_CUDA_BUILD = "TRUE" } }

extra-index-url

--index-url 外要使用的包索引的额外 URL。

接受符合 PEP 503(简单存储库 API)的存储库,或以相同格式布局的本地目录。

通过此标志提供的所有索引优先级高于通过 index_urlindex (带 default = true) 指定的索引。提供多个索引时,较早的值优先级较高。

要控制存在多个索引时 uv 的解析策略,请参见 index_strategy

(已弃用:改用 index。)

默认值: []

类型: list[str]

用法示例:

[tool.uv]
extra-index-url = ["https://download.pytorch.org/whl/cpu"]
extra-index-url = ["https://download.pytorch.org/whl/cpu"]

除注册表索引中找到的候选分发包外,还要搜索候选分发包的位置。

如果是路径,则目标必须是一个目录,其顶层包含作为 wheel 文件 (.whl) 或源码分发(例如 .tar.gz.zip)的包。

如果是 URL,页面必须包含指向上述格式包文件的扁平链接列表。

默认值: []

类型: list[str]

用法示例:

[tool.uv]
find-links = ["https://download.pytorch.org/whl/torch_stable.html"]
find-links = ["https://download.pytorch.org/whl/torch_stable.html"]

fork-strategy

在 Python 版本和平台之间选择给定包的多个版本时使用的策略。

默认情况下,uv 将优化为为每个受支持的 Python 版本(requires-python)选择每个包的最新版本,同时最小化跨平台选择的版本数量。

fewest 下,uv 将最小化为每个包选择的版本数量,更倾向于与更广泛的受支持 Python 版本或平台兼容的旧版本。

默认值: "requires-python"

可能的值:

  • "fewest": 优化为为每个包选择最少数量的版本。如果旧版本与更广泛的受支持 Python 版本或平台兼容,则可能更倾向于它们
  • "requires-python": 优化为为每个受支持的 Python 版本选择每个包的最新受支持版本

用法示例:

[tool.uv]
fork-strategy = "fewest"
fork-strategy = "fewest"

http-proxy

要使用的 HTTP 代理的 URL。

默认值: None

类型: str

用法示例:

uv.toml
http-proxy = "http://proxy.example.com"

https-proxy

要使用的 HTTPS 代理的 URL。

默认值: None

类型: str

用法示例:

uv.toml
https-proxy = "https://proxy.example.com"

index

解析依赖项时使用的包索引。

接受符合 PEP 503(简单存储库 API)的存储库,或以相同格式布局的本地目录。

索引按定义的顺序考虑,即第一个定义的索引具有最高优先级。此外,此设置提供的索引优先级高于通过 index_urlextra_index_url 指定的任何索引。除非指定了替代的 索引策略,否则 uv 将仅考虑包含给定包的第一个索引。

如果索引被标记为 explicit = true,它将专门用于那些通过 [tool.uv.sources] 显式选择它的依赖项,如下所示

[[tool.uv.index]]
name = "pytorch"
url = "https://download.pytorch.org/whl/cu121"
explicit = true

[tool.uv.sources]
torch = { index = "pytorch" }

如果索引被标记为 default = true,它将被移动到优先级列表的末尾,即在解析包时具有最低优先级。此外,将索引标记为默认将禁用 PyPI 默认索引。

默认值: "[]"

类型: dict

用法示例:

[[tool.uv.index]]
name = "pytorch"
url = "https://download.pytorch.org/whl/cu121"
[[tool.uv.index]]
name = "pytorch"
url = "https://download.pytorch.org/whl/cu121"

index-strategy

在针对多个索引 URL 解析时使用的策略。

默认情况下,uv 将在给定包可用的第一个索引处停止,并将解析限制为出现在该第一个索引上的那些(first-index)。这防止了“依赖混淆”攻击,即攻击者可以在替代索引上以相同的名称上传恶意包。

默认值: "first-index"

可能的值:

  • "first-index": 仅使用返回给定包名匹配项的第一个索引的结果
  • "unsafe-first-match": 在所有索引中搜索每个包名,耗尽第一个索引中的版本后再移至下一个
  • "unsafe-best-match": 在所有索引中搜索每个包名,偏好找到的“最佳”版本。如果一个包版本在多个索引中,仅查看第一个索引的条目

用法示例:

[tool.uv]
index-strategy = "unsafe-best-match"
index-strategy = "unsafe-best-match"

index-url

Python 包索引的 URL(默认:https://pypi.ac.cn/simple)。

接受符合 PEP 503(简单存储库 API)的存储库,或以相同格式布局的本地目录。

此设置提供的索引优先级低于通过 extra_index_urlindex 指定的任何索引。

(已弃用:改用 index。)

默认值: "https://pypi.ac.cn/simple"

类型: str

用法示例:

[tool.uv]
index-url = "https://test.pypi.org/simple"
index-url = "https://test.pypi.org/simple"

keyring-provider

尝试使用 keyring 对索引 URL 进行身份验证。

目前,仅支持 --keyring-provider subprocess,它将 uv 配置为使用 keyring CLI 处理身份验证。

默认值: "disabled"

类型: str

用法示例:

[tool.uv]
keyring-provider = "subprocess"
keyring-provider = "subprocess"

从全局缓存安装包时使用的方法。

默认在 macOS 和 Linux 上为 clone(也称为写时复制),在 Windows 上为 hardlink

警告:不鼓励使用符号链接模式,因为它们会在缓存和目标环境之间创建紧密耦合。例如,清除缓存 (uv cache clean) 将通过删除底层源文件来破坏所有已安装的包。谨慎使用符号链接。

默认值: "clone" (macOS, Linux) 或 "hardlink" (Windows)

可能的值:

  • "clone": 将包从源克隆(即写时复制)到目标
  • "copy": 将包从源复制到目标
  • "hardlink": 将包从源硬链接到目标
  • "symlink": 将包从源符号链接到目标

用法示例:

[tool.uv]
link-mode = "copy"
link-mode = "copy"

native-tls

是否从平台的原生证书存储加载 TLS 证书。

默认情况下,uv 从捆绑的 webpki-roots crate 加载证书。webpki-roots 是来自 Mozilla 的一组可靠的信任根,将它们包含在 uv 中提高了可移植性和性能(特别是在 macOS 上)。

但是,在某些情况下,你可能希望使用平台的原生证书存储,特别是如果你依赖包含在系统证书存储中的企业信任根(例如,用于强制代理)。

默认值: false

类型: bool

用法示例:

uv.toml
native-tls = true

no-binary

不要安装预构建的 wheels。

给定的包将从源码构建和安装。如果可用,解析器仍将使用预构建的 wheels 来提取包元数据。

默认值: false

类型: bool

用法示例:

[tool.uv]
no-binary = true
no-binary = true

no-binary-package

不要为特定包安装预构建的 wheels。

默认值: []

类型: list[str]

用法示例:

[tool.uv]
no-binary-package = ["ruff"]
no-binary-package = ["ruff"]

no-build

不要构建源码分发。

启用后,解析将不会运行任意 Python 代码。已构建源码分发的缓存 wheels 将被重用,但需要构建分发的操作将报错退出。

默认值: false

类型: bool

用法示例:

[tool.uv]
no-build = true
no-build = true

no-build-isolation

构建源码分发时禁用隔离。

假设由 PEP 518 指定的构建依赖项已经安装。

默认值: false

类型: bool

用法示例:

[tool.uv]
no-build-isolation = true
no-build-isolation = true

no-build-isolation-package

为特定包构建源码分发时禁用隔离。

假设由 PEP 518 指定的包的构建依赖项已经安装。

默认值: []

类型: list[str]

用法示例:

[tool.uv]
no-build-isolation-package = ["package1", "package2"]
no-build-isolation-package = ["package1", "package2"]

no-build-package

不要为特定包构建源码分发。

默认值: []

类型: list[str]

用法示例:

[tool.uv]
no-build-package = ["ruff"]
no-build-package = ["ruff"]

no-cache

避免读取或写入缓存,而是根据操作持续时间使用临时目录。

默认值: false

类型: bool

用法示例:

[tool.uv]
no-cache = true
no-cache = true

no-index

忽略所有注册表索引(例如 PyPI),转而依赖直接 URL 依赖项以及通过 --find-links 提供的那些。

默认值: false

类型: bool

用法示例:

[tool.uv]
no-index = true
no-index = true

no-proxy

从代理中排除的主机列表。

默认值: None

类型: list[str]

用法示例:

uv.toml
no-proxy = ["localhost", "127.0.0.1"]

no-sources

解析依赖项时忽略 tool.uv.sources 表。用于锁定符合标准的、可发布的包元数据,而不是使用任何本地或 Git 源。

默认值: false

类型: bool

用法示例:

[tool.uv]
no-sources = true
no-sources = true

no-sources-package

为指定包忽略 tool.uv.sources

默认值: []

类型: list[str]

用法示例:

[tool.uv]
no-sources-package = ["ruff"]
no-sources-package = ["ruff"]

offline

禁用网络访问,仅依赖本地缓存的数据和本地可用的文件。

默认值: false

类型: bool

用法示例:

[tool.uv]
offline = true
offline = true

prerelease

考虑预发布版本时使用的策略。

默认情况下,uv 将接受发布预发布版本的包,以及在声明的说明符中包含显式预发布标记的一方需求(if-necessary-or-explicit)。

默认值: "if-necessary-or-explicit"

可能的值:

  • "disallow": 不允许所有预发布版本
  • "allow": 允许所有预发布版本
  • "if-necessary": 如果包的所有版本都是预发布版本,则允许预发布版本
  • "explicit": 允许版本需求中具有显式预发布标记的第一方包的预发布版本
  • "if-necessary-or-explicit": 如果包的所有版本都是预发布版本,或者包的版本需求中具有显式预发布标记,则允许预发布版本

用法示例:

[tool.uv]
prerelease = "allow"
prerelease = "allow"

preview

是否启用实验性的预览功能。

默认值: false

类型: bool

用法示例:

[tool.uv]
preview = true
preview = true

publish-url

用于将包发布到 Python 包索引的 URL(默认:https://upload.pypi.org/legacy/)。

默认值: "https://upload.pypi.org/legacy/"

类型: str

用法示例:

[tool.uv]
publish-url = "https://test.pypi.org/legacy/"
publish-url = "https://test.pypi.org/legacy/"

pypy-install-mirror

用于下载托管 PyPy 安装的镜像 URL。

默认情况下,托管的 PyPy 安装从 downloads.python.org 下载。此变量可以设置为镜像 URL,以使用不同的 PyPy 安装源。提供的 URL 将替换 https://downloads.python.org/pypy,例如 https://downloads.python.org/pypy/pypy3.8-v7.3.7-osx64.tar.bz2

可以使用 file:// URL 方案从本地目录读取分发包。

默认值: None

类型: str

用法示例:

uv.toml
pypy-install-mirror = "https://downloads.python.org/pypy"

python-downloads

是否允许 Python 下载。

默认值: "automatic"

可能的值:

  • "automatic": 需要时自动下载托管的 Python 安装
  • "manual": 不自动下载托管的 Python 安装;需要显式安装
  • "never": 永远不允许 Python 下载

用法示例:

[tool.uv]
python-downloads = "manual"
python-downloads = "manual"

python-downloads-json-url

指向自定义 Python 安装 JSON 的 URL。

默认值: None

类型: str

用法示例:

uv.toml
python-downloads-json-url = "/etc/uv/python-downloads.json"

python-install-mirror

用于下载托管 Python 安装的镜像 URL。

默认情况下,托管的 Python 安装从 python-build-standalone 下载。此变量可以设置为镜像 URL,以使用不同的 Python 安装源。提供的 URL 将替换 https://github.com/astral-sh/python-build-standalone/releases/download,例如 https://github.com/astral-sh/python-build-standalone/releases/download/20240713/cpython-3.12.4%2B20240713-aarch64-apple-darwin-install_only.tar.gz

可以使用 file:// URL 方案从本地目录读取分发包。

默认值: None

类型: str

用法示例:

uv.toml
python-install-mirror = "https://github.com/astral-sh/python-build-standalone/releases/download"

python-preference

是否倾向于使用系统上已存在的 Python 安装,还是使用 uv 下载和安装的 Python 安装。

默认值: "managed"

可能的值:

  • "only-managed": 仅使用托管的 Python 安装;从不使用系统 Python 安装
  • "managed": 偏好托管的 Python 安装,而不是系统 Python 安装
  • "system": 偏好系统 Python 安装,而不是托管的 Python 安装
  • "only-system": 仅使用系统 Python 安装;从不使用托管的 Python 安装

用法示例:

[tool.uv]
python-preference = "managed"
python-preference = "managed"

reinstall

重新安装所有包,无论它们是否已经安装。意味着 refresh

默认值: false

类型: bool

用法示例:

[tool.uv]
reinstall = true
reinstall = true

reinstall-package

重新安装特定包,无论它是否已经安装。意味着 refresh-package

默认值: []

类型: list[str]

用法示例:

[tool.uv]
reinstall-package = ["ruff"]
reinstall-package = ["ruff"]

required-version

强制执行对 uv 版本的需求。

如果在运行时 uv 的版本不满足该需求,uv 将报错退出。

接受 PEP 440 说明符,例如 ==0.5.0>=0.5.0

默认值: null

类型: str

用法示例:

[tool.uv]
required-version = ">=0.5.0"
required-version = ">=0.5.0"

resolution

为给定的包需求在不同的兼容版本之间进行选择时使用的策略。

默认情况下,uv 将使用每个包的最新兼容版本(highest)。

默认值: "highest"

可能的值:

  • "highest": 解析每个包的最高兼容版本
  • "lowest": 解析每个包的最低兼容版本
  • "lowest-direct": 解析任何直接依赖项的最低兼容版本,以及任何传递依赖项的最高兼容版本

用法示例:

[tool.uv]
resolution = "lowest-direct"
resolution = "lowest-direct"

torch-backend

获取 PyTorch 生态系统中的包时使用的后端。

设置后,uv 将忽略为 PyTorch 生态系统中的包配置的索引 URL,而是使用定义的后端。

例如,当设置为 cpu 时,uv 将使用仅 CPU 的 PyTorch 索引;当设置为 cu126 时,uv 将使用适用于 CUDA 12.6 的 PyTorch 索引。

auto 模式将尝试根据当前安装的 CUDA 驱动程序检测适当的 PyTorch 索引。

此设置仅由 uv pip 命令遵循。

此选项处于预览阶段,未来版本可能会更改。

默认值: null

类型: str

用法示例:

[tool.uv]
torch-backend = "auto"
torch-backend = "auto"

trusted-publishing

配置可信发布。

默认情况下,uv 在受支持的环境中运行时会检查可信发布,但如果未配置则会忽略它。

uv 对可信发布的支持环境包括 GitHub Actions 和 GitLab CI/CD。

默认值: automatic

类型: str

用法示例:

[tool.uv]
trusted-publishing = "always"
trusted-publishing = "always"

upgrade

允许包升级,忽略任何现有输出文件中的固定版本。

默认值: false

类型: bool

用法示例:

[tool.uv]
upgrade = true
upgrade = true

upgrade-package

允许升级特定包,忽略任何现有输出文件中的固定版本。

接受独立包名(ruff)和版本说明符(ruff<0.5.0)。

默认值: []

类型: list[str]

用法示例:

[tool.uv]
upgrade-package = ["ruff"]
upgrade-package = ["ruff"]

pip

特定于 uv pip 命令行接口的设置。

uv pip 命名空间之外运行命令(例如 uv lockuvx)时,这些值将被忽略。

all-extras

包含所有可选依赖项。

仅适用于 pyproject.tomlsetup.pysetup.cfg 源。

默认值: false

类型: bool

用法示例:

[tool.uv.pip]
all-extras = true
[pip]
all-extras = true

allow-empty-requirements

允许使用空需求运行 uv pip sync,这会清除环境中所有的包。

默认值: false

类型: bool

用法示例:

[tool.uv.pip]
allow-empty-requirements = true
[pip]
allow-empty-requirements = true

annotation-style

输出文件中包含的标注注释的样式,用于指示每个包的来源。

默认值: "split"

可能的值:

  • "line": 在单行、逗号分隔的行上渲染标注
  • "split": 在每一行渲染每个标注

用法示例:

[tool.uv.pip]
annotation-style = "line"
[pip]
annotation-style = "line"

break-system-packages

允许 uv 修改受 EXTERNALLY-MANAGED 标记的 Python 安装。

警告:--break-system-packages 旨在用于持续集成 (CI) 环境,在安装到由外部包管理器(如 apt)管理的 Python 安装中时使用。应谨慎使用,因为此类 Python 安装明确建议不要由其他包管理器(如 uv 或 pip)进行修改。

默认值: false

类型: bool

用法示例:

[tool.uv.pip]
break-system-packages = true
[pip]
break-system-packages = true

compile-bytecode

安装后将 Python 文件编译为字节码。

默认情况下,uv 不会将 Python (.py) 文件编译为字节码 (__pycache__/*.pyc);相反,编译是在模块第一次被导入时惰性执行的。对于启动时间至关重要的用例(如 CLI 应用程序和 Docker 容器),可以启用此选项以牺牲更长的安装时间来换取更快的启动时间。

启用后,uv 将处理整个 site-packages 目录(包括当前操作未修改的包)以保持一致性。像 pip 一样,它也会忽略错误。

默认值: false

类型: bool

用法示例:

[tool.uv.pip]
compile-bytecode = true
[pip]
compile-bytecode = true

config-settings

传递给 PEP 517 构建后端的设置,指定为 KEY=VALUE 对。

默认值: {}

类型: dict

用法示例:

[tool.uv.pip]
config-settings = { editable_mode = "compat" }
[pip]
config-settings = { editable_mode = "compat" }

config-settings-package

为特定包传递给 PEP 517 构建后端的设置,指定为 KEY=VALUE 对。

默认值: {}

类型: dict

用法示例:

[tool.uv.pip]
config-settings-package = { numpy = { editable_mode = "compat" } }
[pip]
config-settings-package = { numpy = { editable_mode = "compat" } }

custom-compile-command

uv pip compile 生成的输出文件顶部包含的页眉注释。

用于反映封装 uv pip compile 的自定义构建脚本和命令。

默认值: None

类型: str

用法示例:

[tool.uv.pip]
custom-compile-command = "./custom-uv-compile.sh"
[pip]
custom-compile-command = "./custom-uv-compile.sh"

dependency-metadata

项目依赖(直接或传递)的预定义静态元数据。提供后,使解析器能够使用指定的元数据,而不是查询注册表或从源码构建相关包。

元数据应符合 Metadata 2.3 标准,尽管仅遵循以下字段

  • name: 包名称。
  • (可选)version: 包版本。如果省略,元数据将应用于该包的所有版本。
  • (可选)requires-dist: 包的依赖项(例如 werkzeug>=0.14)。
  • (可选)requires-python: 包所需的 Python 版本(例如 >=3.10)。
  • (可选)provides-extra: 包提供的额外项。

默认值: []

类型: list[dict]

用法示例:

[tool.uv.pip]
dependency-metadata = [
    { name = "flask", version = "1.0.0", requires-dist = ["werkzeug"], requires-python = ">=3.6" },
]
[pip]
dependency-metadata = [
    { name = "flask", version = "1.0.0", requires-dist = ["werkzeug"], requires-python = ">=3.6" },
]

emit-build-options

uv pip compile 生成的输出文件中包含 --no-binary--only-binary 条目。

默认值: false

类型: bool

用法示例:

[tool.uv.pip]
emit-build-options = true
[pip]
emit-build-options = true

uv pip compile 生成的输出文件中包含 --find-links 条目。

默认值: false

类型: bool

用法示例:

[tool.uv.pip]
emit-find-links = true
[pip]
emit-find-links = true

emit-index-annotation

包含注释标注,指示用于解析每个包的索引(例如 # from https://pypi.ac.cn/simple)。

默认值: false

类型: bool

用法示例:

[tool.uv.pip]
emit-index-annotation = true
[pip]
emit-index-annotation = true

emit-index-url

uv pip compile 生成的输出文件中包含 --index-url--extra-index-url 条目。

默认值: false

类型: bool

用法示例:

[tool.uv.pip]
emit-index-url = true
[pip]
emit-index-url = true

emit-marker-expression

是否输出指示固定依赖集有效的条件的标记字符串。

即使标记表达式为 false,固定依赖项也可能有效,但当表达式为 true 时,需求是已知的正确的。

默认值: false

类型: bool

用法示例:

[tool.uv.pip]
emit-marker-expression = true
[pip]
emit-marker-expression = true

exclude-newer

将候选包限制为在给定时间点之前上传的包。

接受 RFC 3339 的超集(例如 2006-12-02T02:07:43Z)。需要完整的时间戳,以确保解析器在不同时区之间保持一致。

默认值: None

类型: str

用法示例:

[tool.uv.pip]
exclude-newer = "2006-12-02T02:07:43Z"
[pip]
exclude-newer = "2006-12-02T02:07:43Z"

exclude-newer-package

将特定包的候选包限制为在给定日期之前上传的包。

以字典格式接受包-日期对。

默认值: None

类型: dict

用法示例:

[tool.uv.pip]
exclude-newer-package = { tqdm = "2022-04-04T00:00:00Z" }
[pip]
exclude-newer-package = { tqdm = "2022-04-04T00:00:00Z" }

extra

包含指定额外项中的可选依赖项;可以提供多次。

仅适用于 pyproject.tomlsetup.pysetup.cfg 源。

默认值: []

类型: list[str]

用法示例:

[tool.uv.pip]
extra = ["dev", "docs"]
[pip]
extra = ["dev", "docs"]

extra-build-dependencies

包的额外构建依赖项。

这允许使用额外的包扩展项目依赖项的 PEP 517 构建环境。这对于假设存在 pip 等包且未将其声明为构建依赖项的包非常有用。

默认值: []

类型: dict

用法示例:

[tool.uv.pip]
extra-build-dependencies = { pytest = ["setuptools"] }
[pip]
extra-build-dependencies = { pytest = ["setuptools"] }

extra-build-variables

构建某些包时设置的额外环境变量。

构建指定包时,环境变量将被添加到环境中。

默认值: {}

类型: dict[str, dict[str, str]]

用法示例:

[tool.uv.pip]
extra-build-variables = { flash-attn = { FLASH_ATTENTION_SKIP_CUDA_BUILD = "TRUE" } }
[pip]
extra-build-variables = { flash-attn = { FLASH_ATTENTION_SKIP_CUDA_BUILD = "TRUE" } }

extra-index-url

--index-url 外要使用的包索引的额外 URL。

接受符合 PEP 503(简单存储库 API)的存储库,或以相同格式布局的本地目录。

通过此标志提供的所有索引优先级高于通过 index_url 指定的索引。提供多个索引时,较早的值优先级较高。

要控制存在多个索引时 uv 的解析策略,请参见 index_strategy

默认值: []

类型: list[str]

用法示例:

[tool.uv.pip]
extra-index-url = ["https://download.pytorch.org/whl/cpu"]
[pip]
extra-index-url = ["https://download.pytorch.org/whl/cpu"]

除注册表索引中找到的候选分发包外,还要搜索候选分发包的位置。

如果是路径,则目标必须是一个目录,其顶层包含作为 wheel 文件 (.whl) 或源码分发(例如 .tar.gz.zip)的包。

如果是 URL,页面必须包含指向上述格式包文件的扁平链接列表。

默认值: []

类型: list[str]

用法示例:

[tool.uv.pip]
find-links = ["https://download.pytorch.org/whl/torch_stable.html"]
[pip]
find-links = ["https://download.pytorch.org/whl/torch_stable.html"]

fork-strategy

在 Python 版本和平台之间选择给定包的多个版本时使用的策略。

默认情况下,uv 将优化为为每个受支持的 Python 版本(requires-python)选择每个包的最新版本,同时最小化跨平台选择的版本数量。

fewest 下,uv 将最小化为每个包选择的版本数量,更倾向于与更广泛的受支持 Python 版本或平台兼容的旧版本。

默认值: "requires-python"

可能的值:

  • "fewest": 优化为为每个包选择最少数量的版本。如果旧版本与更广泛的受支持 Python 版本或平台兼容,则可能更倾向于它们
  • "requires-python": 优化为为每个受支持的 Python 版本选择每个包的最新受支持版本

用法示例:

[tool.uv.pip]
fork-strategy = "fewest"
[pip]
fork-strategy = "fewest"

generate-hashes

在输出文件中包含分发哈希。

默认值: false

类型: bool

用法示例:

[tool.uv.pip]
generate-hashes = true
[pip]
generate-hashes = true

group

包含以下依赖分组。

默认值: None

类型: list[str]

用法示例:

[tool.uv.pip]
group = ["dev", "docs"]
[pip]
group = ["dev", "docs"]

index-strategy

在针对多个索引 URL 解析时使用的策略。

默认情况下,uv 将在给定包可用的第一个索引处停止,并将解析限制为出现在该第一个索引上的那些(first-index)。这防止了“依赖混淆”攻击,即攻击者可以在替代索引上以相同的名称上传恶意包。

默认值: "first-index"

可能的值:

  • "first-index": 仅使用返回给定包名匹配项的第一个索引的结果
  • "unsafe-first-match": 在所有索引中搜索每个包名,耗尽第一个索引中的版本后再移至下一个
  • "unsafe-best-match": 在所有索引中搜索每个包名,偏好找到的“最佳”版本。如果一个包版本在多个索引中,仅查看第一个索引的条目

用法示例:

[tool.uv.pip]
index-strategy = "unsafe-best-match"
[pip]
index-strategy = "unsafe-best-match"

index-url

Python 包索引的 URL(默认:https://pypi.ac.cn/simple)。

接受符合 PEP 503(简单存储库 API)的存储库,或以相同格式布局的本地目录。

此设置提供的索引优先级低于通过 extra_index_url 指定的任何索引。

默认值: "https://pypi.ac.cn/simple"

类型: str

用法示例:

[tool.uv.pip]
index-url = "https://test.pypi.org/simple"
[pip]
index-url = "https://test.pypi.org/simple"

keyring-provider

尝试使用 keyring 对索引 URL 进行身份验证。

目前,仅支持 --keyring-provider subprocess,它将 uv 配置为使用 keyring CLI 处理身份验证。

默认值: disabled

类型: str

用法示例:

[tool.uv.pip]
keyring-provider = "subprocess"
[pip]
keyring-provider = "subprocess"

从全局缓存安装包时使用的方法。

默认在 macOS 和 Linux 上为 clone(也称为写时复制),在 Windows 上为 hardlink

警告:不鼓励使用符号链接模式,因为它们会在缓存和目标环境之间创建紧密耦合。例如,清除缓存 (uv cache clean) 将通过删除底层源文件来破坏所有已安装的包。谨慎使用符号链接。

默认值: "clone" (macOS, Linux) 或 "hardlink" (Windows)

可能的值:

  • "clone": 将包从源克隆(即写时复制)到目标
  • "copy": 将包从源复制到目标
  • "hardlink": 将包从源硬链接到目标
  • "symlink": 将包从源符号链接到目标

用法示例:

[tool.uv.pip]
link-mode = "copy"
[pip]
link-mode = "copy"

no-annotate

uv pip compile 生成的输出文件中排除指示每个包来源的注释标注。

默认值: false

类型: bool

用法示例:

[tool.uv.pip]
no-annotate = true
[pip]
no-annotate = true

no-binary

不要安装预构建的 wheels。

给定的包将从源码构建和安装。如果可用,解析器仍将使用预构建的 wheels 来提取包元数据。

可以提供多个包。使用 :all: 禁用所有包的二进制文件。使用 :none: 清除之前指定的包。

默认值: []

类型: list[str]

用法示例:

[tool.uv.pip]
no-binary = ["ruff"]
[pip]
no-binary = ["ruff"]

no-build

不要构建源码分发。

启用后,解析将不会运行任意 Python 代码。已构建源码分发的缓存 wheels 将被重用,但需要构建分发的操作将报错退出。

--only-binary :all: 的别名。

默认值: false

类型: bool

用法示例:

[tool.uv.pip]
no-build = true
[pip]
no-build = true

no-build-isolation

构建源码分发时禁用隔离。

假设由 PEP 518 指定的构建依赖项已经安装。

默认值: false

类型: bool

用法示例:

[tool.uv.pip]
no-build-isolation = true
[pip]
no-build-isolation = true

no-build-isolation-package

为特定包构建源码分发时禁用隔离。

假设由 PEP 518 指定的包的构建依赖项已经安装。

默认值: []

类型: list[str]

用法示例:

[tool.uv.pip]
no-build-isolation-package = ["package1", "package2"]
[pip]
no-build-isolation-package = ["package1", "package2"]

no-deps

忽略包依赖项,而是仅将命令行上显式列出的那些包添加到最终的需求文件中。

默认值: false

类型: bool

用法示例:

[tool.uv.pip]
no-deps = true
[pip]
no-deps = true

no-emit-package

指定要从输出解析中省略的包。其依赖项仍将包含在解析中。等同于 pip-compile 的 --unsafe-package 选项。

默认值: []

类型: list[str]

用法示例:

[tool.uv.pip]
no-emit-package = ["ruff"]
[pip]
no-emit-package = ["ruff"]

no-extra

如果提供了 all-extras,则排除指定的可选依赖项。

默认值: []

类型: list[str]

用法示例:

[tool.uv.pip]
all-extras = true
no-extra = ["dev", "docs"]
[pip]
all-extras = true
no-extra = ["dev", "docs"]

no-header

排除 uv pip compile 生成的输出文件顶部的注释页眉。

默认值: false

类型: bool

用法示例:

[tool.uv.pip]
no-header = true
[pip]
no-header = true

no-index

忽略所有注册表索引(例如 PyPI),转而依赖直接 URL 依赖项以及通过 --find-links 提供的那些。

默认值: false

类型: bool

用法示例:

[tool.uv.pip]
no-index = true
[pip]
no-index = true

no-sources

解析依赖项时忽略 tool.uv.sources 表。用于锁定符合标准的、可发布的包元数据,而不是使用任何本地或 Git 源。

默认值: false

类型: bool

用法示例:

[tool.uv.pip]
no-sources = true
[pip]
no-sources = true

no-sources-package

为指定包忽略 tool.uv.sources

默认值: []

类型: list[str]

用法示例:

[tool.uv.pip]
no-sources-package = ["ruff"]
[pip]
no-sources-package = ["ruff"]

no-strip-extras

在输出文件中包含额外项。

默认情况下,uv 会剥离额外项,因为额外项拉入的任何包都已经作为依赖项直接包含在输出文件中。此外,使用 --no-strip-extras 生成的输出文件不能用作 installsync 调用中的约束文件。

默认值: false

类型: bool

用法示例:

[tool.uv.pip]
no-strip-extras = true
[pip]
no-strip-extras = true

no-strip-markers

uv pip compile 生成的输出文件中包含环境标记。

默认情况下,uv 会剥离环境标记,因为 compile 生成的解析结果仅保证对目标环境是正确的。

默认值: false

类型: bool

用法示例:

[tool.uv.pip]
no-strip-markers = true
[pip]
no-strip-markers = true

only-binary

仅使用预构建的 wheels;不要构建源码分发。

启用后,解析将不会运行给定包中的代码。已构建源码分发的缓存 wheels 将被重用,但需要构建分发的操作将报错退出。

可以提供多个包。使用 :all: 禁用所有包的二进制文件。使用 :none: 清除之前指定的包。

默认值: []

类型: list[str]

用法示例:

[tool.uv.pip]
only-binary = ["ruff"]
[pip]
only-binary = ["ruff"]

output-file

uv pip compile 生成的需求写入给定的 requirements.txt 文件。

如果文件已经存在,则在解析依赖项时将偏好现有版本,除非同时指定了 --upgrade

默认值: None

类型: str

用法示例:

[tool.uv.pip]
output-file = "requirements.txt"
[pip]
output-file = "requirements.txt"

prefix

将包安装到指定目录下的 libbin 和其他顶层文件夹中,就像在该位置存在虚拟环境一样。

通常,偏好使用 --python 安装到备用环境中,因为通过 --prefix 安装的脚本和其他工件将引用安装时的解释器,而不是添加到 --prefix 目录中的任何解释器,这使它们不可移植。

默认值: None

类型: str

用法示例:

[tool.uv.pip]
prefix = "./prefix"
[pip]
prefix = "./prefix"

prerelease

考虑预发布版本时使用的策略。

默认情况下,uv 将接受发布预发布版本的包,以及在声明的说明符中包含显式预发布标记的一方需求(if-necessary-or-explicit)。

默认值: "if-necessary-or-explicit"

可能的值:

  • "disallow": 不允许所有预发布版本
  • "allow": 允许所有预发布版本
  • "if-necessary": 如果包的所有版本都是预发布版本,则允许预发布版本
  • "explicit": 允许版本需求中具有显式预发布标记的第一方包的预发布版本
  • "if-necessary-or-explicit": 如果包的所有版本都是预发布版本,或者包的版本需求中具有显式预发布标记,则允许预发布版本

用法示例:

[tool.uv.pip]
prerelease = "allow"
[pip]
prerelease = "allow"

python

应安装包的 Python 解释器。

默认情况下,uv 安装到当前工作目录或任何父目录中的虚拟环境中。--python 选项允许你指定不同的解释器,旨在用于持续集成 (CI) 环境或其他自动化工作流程。

支持的格式:- 3.10 在 Windows 上注册表中查找已安装的 Python 3.10(见 py --list-paths),或在 Linux 和 macOS 上查找 python3.10。- python3.10python.exePATH 中查找具有给定名称的二进制文件。- /home/ferris/.local/bin/python3.10 使用给定路径下确切的 Python。

默认值: None

类型: str

用法示例:

[tool.uv.pip]
python = "3.10"
[pip]
python = "3.10"

python-platform

应为其解析需求的平台。

表示为“目标三元组”(target triple),这是一个字符串,用其 CPU、供应商和操作系统名称描述目标平台,例如 x86_64-unknown-linux-gnuaarch64-apple-darwin

默认值: None

类型: str

用法示例:

[tool.uv.pip]
python-platform = "x86_64-unknown-linux-gnu"
[pip]
python-platform = "x86_64-unknown-linux-gnu"

python-version

解析的需求应支持的最低 Python 版本(例如 3.83.8.17)。

如果省略补丁版本,则假定为最低补丁版本。例如,3.8 被映射为 3.8.0

默认值: None

类型: str

用法示例:

[tool.uv.pip]
python-version = "3.8"
[pip]
python-version = "3.8"

reinstall

重新安装所有包,无论它们是否已经安装。意味着 refresh

默认值: false

类型: bool

用法示例:

[tool.uv.pip]
reinstall = true
[pip]
reinstall = true

reinstall-package

重新安装特定包,无论它是否已经安装。意味着 refresh-package

默认值: []

类型: list[str]

用法示例:

[tool.uv.pip]
reinstall-package = ["ruff"]
[pip]
reinstall-package = ["ruff"]

require-hashes

要求每个需求具有匹配的哈希。

哈希检查模式是全有或全无的。如果启用,所有需求都必须提供相应的哈希或哈希集。此外,如果启用,所有需求必须固定到确切版本(例如 ==1.0.0),或者通过直接 URL 指定。

哈希检查模式引入了许多额外的约束

  • 不支持 Git 依赖项。
  • 不支持可编辑安装。
  • 不支持本地依赖项,除非它们指向特定的 wheel (.whl) 或源码归档 (.zip.tar.gz),而不是目录。

默认值: false

类型: bool

用法示例:

[tool.uv.pip]
require-hashes = true
[pip]
require-hashes = true

resolution

为给定的包需求在不同的兼容版本之间进行选择时使用的策略。

默认情况下,uv 将使用每个包的最新兼容版本(highest)。

默认值: "highest"

可能的值:

  • "highest": 解析每个包的最高兼容版本
  • "lowest": 解析每个包的最低兼容版本
  • "lowest-direct": 解析任何直接依赖项的最低兼容版本,以及任何传递依赖项的最高兼容版本

用法示例:

[tool.uv.pip]
resolution = "lowest-direct"
[pip]
resolution = "lowest-direct"

strict

验证 Python 环境,以检测缺少依赖项的包和其他问题。

默认值: false

类型: bool

用法示例:

[tool.uv.pip]
strict = true
[pip]
strict = true

system

将包安装到系统 Python 环境中。

默认情况下,uv 安装到当前工作目录或任何父目录中的虚拟环境中。--system 选项指示 uv 转而使用系统 PATH 中找到的第一个 Python。

警告:--system 旨在用于持续集成 (CI) 环境,应谨慎使用,因为它会修改系统 Python 安装。

默认值: false

类型: bool

用法示例:

[tool.uv.pip]
system = true
[pip]
system = true

target

将软件包安装到指定目录,而不是虚拟环境或系统 Python 环境中。软件包将安装在目录的顶层。

默认值: None

类型: str

用法示例:

[tool.uv.pip]
target = "./target"
[pip]
target = "./target"

torch-backend

获取 PyTorch 生态系统中的包时使用的后端。

设置后,uv 将忽略为 PyTorch 生态系统中的包配置的索引 URL,而是使用定义的后端。

例如,当设置为 cpu 时,uv 将使用仅 CPU 的 PyTorch 索引;当设置为 cu126 时,uv 将使用适用于 CUDA 12.6 的 PyTorch 索引。

auto 模式将尝试根据当前安装的 CUDA 驱动程序检测适当的 PyTorch 索引。

此设置仅由 uv pip 命令遵循。

此选项处于预览阶段,未来版本可能会更改。

默认值: null

类型: str

用法示例:

[tool.uv.pip]
torch-backend = "auto"
[pip]
torch-backend = "auto"

universal

执行通用解析,尝试生成一个兼容所有操作系统、架构和 Python 实现的单一 requirements.txt 输出文件。

在通用模式下,当前的 Python 版本(或用户提供的 --python-version)将被视为下限。例如,--universal --python-version 3.7 将生成适用于 Python 3.7 及更高版本的通用解析。

默认值: false

类型: bool

用法示例:

[tool.uv.pip]
universal = true
[pip]
universal = true

upgrade

允许包升级,忽略任何现有输出文件中的固定版本。

默认值: false

类型: bool

用法示例:

[tool.uv.pip]
upgrade = true
[pip]
upgrade = true

upgrade-package

允许升级特定包,忽略任何现有输出文件中的固定版本。

接受独立包名(ruff)和版本说明符(ruff<0.5.0)。

默认值: []

类型: list[str]

用法示例:

[tool.uv.pip]
upgrade-package = ["ruff"]
[pip]
upgrade-package = ["ruff"]

verify-hashes

验证需求文件中提供的任何哈希值。

--require-hashes 不同,--verify-hashes 不要求所有需求都必须包含哈希值;相反,它仅限于验证那些确实包含哈希值的需求的哈希值。

默认值: true

类型: bool

用法示例:

[tool.uv.pip]
verify-hashes = true
[pip]
verify-hashes = true