跳转至

项目结构和文件

pyproject.toml

Python 项目元数据在pyproject.toml文件中定义。uv 需要此文件来识别项目的根目录。

提示

可以使用 uv init 创建新项目。详情请参阅创建项目

一个最小化的项目定义包括名称和版本:

pyproject.toml
[project]
name = "example"
version = "0.1.0"

其他项目元数据和配置包括: - Python 版本要求 - 依赖项 - 构建系统 - 入口点(命令)

项目环境

使用 uv 处理项目时,uv 会根据需要创建一个虚拟环境。虽然某些 uv 命令会创建临时环境(例如 uv run --isolated),但 uv 也会在 pyproject.toml 旁边的 .venv 目录中管理项目及其依赖项的持久化环境。将其存储在项目内部,便于编辑器查找,因为编辑器需要该环境来提供代码补全和类型提示。不建议将 .venv 目录纳入版本控制,uv 会通过内部的 .gitignore 文件自动将其从 git 中排除。

要在项目环境中运行命令,请使用 uv run。或者,也可以像普通虚拟环境一样激活项目环境。

调用 uv run 时,如果项目环境尚不存在,它将创建该环境;如果已存在,则确保其为最新状态。也可以使用 uv sync 显式创建项目环境。详细信息请参阅锁定与同步文档。

不建议手动修改项目环境,例如使用 uv pip install。对于项目依赖项,使用 uv add 将包添加到环境中。对于一次性需求,使用uvxuv run --with

提示

如果不想让 uv 管理项目环境,可以设置managed = false 来禁用项目的自动锁定和同步。例如:

pyproject.toml
[tool.uv]
managed = false

锁定文件

uv 会在 pyproject.toml 旁边创建一个 uv.lock 文件。

uv.lock 是一个通用跨平台的锁定文件,它记录了在所有可能的 Python 标识(如操作系统、架构和 Python 版本)下要安装的软件包。

与用于指定项目宽泛要求的 pyproject.toml 不同,锁定文件包含项目环境中安装的确切解析版本。此文件应提交到版本控制系统中,以便在不同机器上实现一致且可复现的安装。

锁定文件可确保参与项目的开发人员使用一致的软件包版本集。此外,在将项目作为应用程序部署时,它还能确保知晓所使用的确切软件包版本集。

在使用项目环境的 uv 调用(即 uv syncuv run)过程中,锁定文件会自动创建和更新。也可以使用 uv lock 显式更新锁定文件。

uv.lock 是一个人类可读的 TOML 文件,但由 uv 管理,不应手动编辑。uv.lock 格式特定于 uv,其他工具无法使用。

pylock.toml

PEP 751 中,Python 将一种新的解析文件格式 pylock.toml 标准化。

pylock.toml 是一种解析输出格式,旨在取代 requirements.txt(例如,在 uv pip compile 的场景下,从一组输入需求生成 “锁定的” requirements.txt 文件)。pylock.toml 是标准化且与工具无关的,因此未来,由 uv 生成的 pylock.toml 文件可以由其他工具安装,反之亦然。

uv 的某些功能无法用 pylock.toml 格式表示;因此,uv 将在项目接口中继续使用 uv.lock 格式。

不过,uv 支持将 pylock.toml 作为导出目标,并在 uv pip 命令行界面中支持。例如: - 要将 uv.lock 导出为 pylock.toml 格式,运行:uv export -o pylock.toml - 要从一组需求生成 pylock.toml 文件,运行:uv pip compile -o pylock.toml -r requirements.in - 要从 pylock.toml 文件安装,运行:uv pip sync pylock.tomluv pip install -r pylock.toml