跳转到内容

配置文件

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 文件,这些文件遵循相同的结构,但省略了 [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 crate 提供支持。

要从指定位置加载.env文件,可以设置UV_ENV_FILE环境变量,或者向uv run传递--env-file参数。

例如,要从当前工作目录中的.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,或者向uv run传递--no-env-file标志。

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

配置pip接口

提供了一个专用的[tool.uv.pip]部分来配置用于uv pip命令行的设置。此部分中的配置不会应用于uv pip命名空间之外的uv命令。然而,此部分中的许多设置在顶级命名空间中有对应的配置项,这些配置项确实会应用于uv pip接口,除非它们被uv.pip部分中的值覆盖。

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

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

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