处理项目
uv 支持管理 Python 项目,这些项目在 pyproject.toml 文件中定义其依赖项。
创建新项目
你可以使用 uv init 命令创建一个新的 Python 项目
或者,你也可以在当前工作目录中初始化一个项目
uv 将创建以下文件
main.py 文件包含一个简单的“Hello world”程序。尝试使用 uv run 来运行它
项目结构
一个项目由几个协同工作的核心部分组成,这些部分使 uv 能够管理你的项目。除了 uv init 创建的文件外,当你首次运行项目命令(例如 uv run、uv sync 或 uv lock)时,uv 会在项目根目录下创建一个虚拟环境和一个 uv.lock 文件。
完整的文件列表如下
.
├── .venv
│ ├── bin
│ ├── lib
│ └── pyvenv.cfg
├── .python-version
├── README.md
├── main.py
├── pyproject.toml
└── uv.lock
pyproject.toml
pyproject.toml 包含关于你项目的元数据
[project]
name = "hello-world"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
dependencies = []
你将使用此文件来指定依赖项以及项目的详细信息(例如描述或许可证)。你可以手动编辑此文件,或使用 uv add 和 uv remove 等命令从终端管理你的项目。
提示
有关 pyproject.toml 格式的入门更多详细信息,请参阅官方的 pyproject.toml 指南。
你还可以使用此文件在 [tool.uv] 部分中指定 uv 的 配置选项。
.python-version
.python-version 文件包含项目的默认 Python 版本。该文件告诉 uv 在创建项目虚拟环境时使用哪个 Python 版本。
.venv
.venv 文件夹包含项目的虚拟环境,这是一个与系统其余部分隔离的 Python 环境。这是 uv 安装项目依赖项的地方。
有关更多详细信息,请参阅 项目环境 文档。
uv.lock
uv.lock 是一个跨平台的锁定文件,包含有关项目依赖项的精确信息。与用于指定项目宽泛需求的 pyproject.toml 不同,锁定文件包含安装在项目环境中的精确解析版本。该文件应纳入版本控制,以便在不同机器上实现一致且可重现的安装。
uv.lock 是一个人类可读的 TOML 文件,但由 uv 管理,不应手动编辑。
有关更多详细信息,请参阅 锁定文件 文档。
管理依赖
你可以使用 uv add 命令将依赖项添加到 pyproject.toml 中。这也将更新锁定文件和项目环境
你还可以指定版本限制或备用源
$ # Specify a version constraint
$ uv add 'requests==2.31.0'
$ # Add a git dependency
$ uv add git+https://github.com/psf/requests
如果你是从 requirements.txt 文件迁移而来,可以使用带 -r 标志的 uv add 命令来添加该文件中的所有依赖项
要移除包,可以使用 uv remove
要升级包,请运行带 --upgrade-package 标志的 uv lock
--upgrade-package 标志将尝试将指定的包更新到最新的兼容版本,同时保持锁定文件的其余部分不变。
有关更多详细信息,请参阅 管理依赖项 的相关文档。
查看版本
uv version 命令可用于读取包的版本。
要获取包的版本,请运行 uv version
要获取不带包名的版本,请使用 --short 选项
要以 JSON 格式获取版本信息,请使用 --output-format json 选项
$ uv version --output-format json
{
"package_name": "hello-world",
"version": "0.7.0",
"commit_info": null
}
有关更新包版本的详细信息,请参阅 发布指南。
运行命令
uv run 可用于在项目环境中运行任意脚本或命令。
在每次调用 uv run 之前,uv 都会验证锁定文件是否与 pyproject.toml 同步,以及环境是否与锁定文件同步,从而无需人工干预即可保持项目同步。uv run 确保你的命令是在所有必需依赖项都处于锁定版本的情况下运行的。
注意
默认情况下,uv run 不会从环境中移除外部包(不在锁定文件中的包)。有关详细信息,请参阅 处理外部包。
例如,使用 flask
或者,运行脚本
或者,你可以使用 uv sync 手动更新环境,然后在执行命令之前激活它
注意
虚拟环境必须处于激活状态才能在不使用 uv run 的情况下在项目中运行脚本和命令。虚拟环境的激活方式因 Shell 和平台而异。
有关更多详细信息,请参阅项目中 运行命令和脚本 的文档。
构建分发包
uv build 可用于为你的项目构建源分发包 (sdist) 和二进制分发包 (wheel)。
默认情况下,uv build 会在当前目录中构建项目,并将构建出的制品放置在 dist/ 子目录中
有关更多详细信息,请参阅 构建项目 的文档。
下一步
要了解有关使用 uv 进行项目开发的更多信息,请参阅 项目概念 页面和 命令行参考。
或者,继续阅读以了解如何 将 uv 锁定文件导出为不同格式。