跳转至

配置文件

uv 支持项目级和用户级的持久化配置文件。

具体来说,uv 会在当前目录或最近的父目录中查找 pyproject.tomluv.toml 文件。

注意

对于在用户级别运行的 tool 命令,本地配置文件将被忽略。相反,uv 将仅读取用户级配置(例如 ~/.config/uv/uv.toml)和系统级配置(例如 /etc/uv/uv.toml)。

在工作区中,uv 将从工作区根目录开始搜索,忽略工作区成员中定义的任何配置。由于工作区作为一个整体被锁定,因此所有成员共享配置。

如果找到 pyproject.toml 文件,uv 将从 [tool.uv] 表中读取配置。例如,要设置一个持久化的索引 URL,在 pyproject.toml 中添加以下内容:

pyproject.toml
[[tool.uv.index]]
url = "https://test.pypi.org/simple"
default = true

(如果不存在这样的表,pyproject.toml 文件将被忽略,uv 将继续在目录层级结构中搜索。)

uv 还会搜索 uv.toml 文件,其结构与 pyproject.toml 中的 [tool.uv] 部分相同,但省略了 [tool.uv] 前缀。例如:

uv.toml
[[index]]
url = "https://test.pypi.org/simple"
default = true

注意

uv.toml 文件优先于 pyproject.toml 文件,因此如果一个目录中同时存在 uv.tomlpyproject.toml 文件,将从 uv.toml 中读取配置,而 pyproject.toml 中的 [tool.uv] 部分将被忽略。

uv 还会在 macOS 和 Linux 系统上的 ~/.config/uv/uv.toml(或 $XDG_CONFIG_HOME/uv/uv.toml),或 Windows 系统上的 %APPDATA%\uv\uv.toml 中查找用户级配置;在 macOS 和 Linux 系统上的 /etc/uv/uv.toml(或 $XDG_CONFIG_DIRS/uv/uv.toml),或 Windows 系统上的 %SYSTEMDRIVE%\ProgramData\uv\uv.toml 中查找系统级配置。

用户级和系统级配置必须使用 uv.toml 格式,而不是 pyproject.toml 格式,因为 pyproject.toml 旨在定义一个 Python 项目

如果同时找到项目级、用户级和系统级配置文件,设置将被合并,项目级配置优先于用户级配置,用户级配置优先于系统级配置。(如果找到多个系统级配置文件,例如同时在 /etc/uv/uv.toml$XDG_CONFIG_DIRS/uv/uv.toml 中找到,将仅使用第一个找到的文件,XDG 优先。)

例如,如果项目级和用户级配置表中都存在一个字符串、数字或布尔值,将使用项目级的值,忽略用户级的值。如果两个表中都存在一个数组,数组将被连接起来,项目级设置在合并后的数组中靠前。

通过环境变量提供的设置优先于持久化配置,通过命令行提供的设置优先于环境变量和持久化配置。

uv 接受 --no-config 命令行参数,使用该参数时,将禁用任何持久化配置的查找。

uv 还接受 --config-file 命令行参数,该参数接受一个 uv.toml 文件路径作为配置文件。使用该参数时,将使用此文件替代 任何 找到的配置文件(例如,用户级配置将被忽略)。

设置

有关可用设置的枚举,请参阅设置参考

.env

uv run 可以从 dotenv 文件(例如 .env.env.local.env.development)加载环境变量,这由 dotenvy 库提供支持。

要从特定位置加载 .env 文件,可以设置 UV_ENV_FILE 环境变量,或者将 --env-file 标志传递给 uv run

例如,要从当前工作目录中的 .env 文件加载环境变量:

$ echo "MY_VAR='Hello, world!'" > .env
$ uv run --env-file .env -- python -c 'import os; print(os.getenv("MY_VAR"))'
Hello, world!

--env-file 标志可以多次提供,后续文件会覆盖先前文件中定义的值。要通过 UV_ENV_FILE 环境变量提供多个文件,用空格分隔路径(例如 UV_ENV_FILE="/path/to/file1 /path/to/file2")。

要禁用 dotenv 加载(例如,覆盖 UV_ENV_FILE--env-file 命令行参数),将 UV_NO_ENV_FILE 环境变量设置为 1,或者将 --no-env-file 标志传递给 uv run

如果同一变量在环境和 .env 文件中都有定义,则环境中的值优先。

配置 pip 接口

专门提供了一个 [tool.uv.pip](参考设置) 部分,用于仅配置 uv pip 命令行接口。此部分中的设置不适用于 uv pip 命名空间之外的 uv 命令。不过,除非被 uv.pip 部分中的值覆盖,此部分中的许多设置在顶级命名空间中有相应设置,这些设置确实适用于 uv pip 接口。

uv.pip 设置旨在紧密遵循 pip 的接口,并单独声明以保持兼容性,同时允许全局设置使用其他设计(例如 --no-build)。

例如,在 [tool.uv.pip] 下设置 index-url,如下 pyproject.toml 所示,这只会影响 uv pip 子命令(例如 uv pip install,但不影响 uv syncuv lockuv run):

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