uv 是由 Astral(Ruff 的开发团队)开发的一个极速 Python 包管理器。随着版本的迭代,uv 目前提供两种主要的依赖管理工作流:
- 现代项目管理工作流(推荐):类似 Rust 的 Cargo 或 Python 的 Poetry/PDM,基于
pyproject.toml和uv.lock。 - Pip 兼容工作流:作为传统
pip和pip-tools的极速平替。
下面为您详细介绍这两种工作流的基本操作:
一、 现代项目管理工作流(官方强烈推荐)
这是目前 uv 最核心且推荐的使用方式。它会自动帮你管理虚拟环境、依赖和锁文件(Lockfile),全程不需要你手动激活虚拟环境。
1. 初始化项目
进入一个空目录或新目录,执行初始化:
uv init my_project
cd my_project这会生成几个关键文件:
pyproject.toml:项目配置文件。.python-version:记录当前使用的 Python 版本。hello.py:一个简单的示例代码。
2. 添加依赖
当你需要安装第三方包(如 requests)时,直接使用 add 命令:
uv add requestsuv 在后台自动做了这几件事:
- 发现没有虚拟环境,自动在项目下创建一个
.venv文件夹。 - 下载并安装
requests及其依赖。 - 更新
pyproject.toml,将requests写入dependencies。 - 生成
uv.lock文件,锁定确切的版本号以保证环境可复现。
3. 添加开发依赖
如果是测试工具或代码格式化工具(仅在开发时需要),可以添加为开发依赖:
uv add --dev pytest ruff4. 运行代码
无需手动激活虚拟环境,直接使用 uv run 即可在当前项目的隔离环境中执行代码或命令:
# 运行 Python 脚本
uv run hello.py
# 运行安装的第三方命令行工具
uv run pytest5. 同步与还原依赖(团队协作)
如果你的同事 clone 了这个项目,他们只需要拿到 pyproject.toml 和 uv.lock 文件,然后运行:
uv syncuv 会自动创建虚拟环境,并根据 uv.lock 精确安装所有依赖。
6. 移除依赖
如果你不再需要某个包:
uv remove requests这会自动卸载包并更新 pyproject.toml 和 uv.lock。
二、 Pip 兼容工作流(传统方式的极速平替)
如果你还在使用传统的 requirements.txt,或者仅仅想把 uv 当作一个“更快的 pip”来用,可以使用这种工作流。
1. 创建虚拟环境
uv venv2. 激活虚拟环境
与传统方法一样,你需要手动激活:
- Linux / macOS:
source .venv/bin/activate - Windows:
.venv\Scripts\activate
3. 安装与管理依赖
将平时的 pip 替换为 uv pip:
# 单独安装包
uv pip install requests
# 从 requirements.txt 安装
uv pip install -r requirements.txt4. 依赖锁定(类似 pip-tools)
如果你想做依赖锁定,可以编写一个 requirements.in 文件,然后编译并同步:
# 编译生成包含明确版本的 requirements.txt
uv pip compile requirements.in -o requirements.txt
# 将虚拟环境同步到 requirements.txt 的状态(多退少补)
uv pip sync requirements.txt总结
对于新项目,强烈建议采用第一种工作流(uv init → uv add → uv run)。它的体验最为丝滑,将 Python 的依赖管理、环境隔离、版本控制完美统一在了一起,且速度是传统工具的几十倍。