uv 是 Astral(ruff 的团队)用 Rust 开发的 Python 包管理工具,主打极速。本文快速过一下它的核心功能和使用体验。
安装
# 官方推荐方式
curl -LsSf https://astral.sh/uv/install.sh | sh
# 或用 pip 安装(套娃了属于是)
pip install uv
# 验证
uv --version
安装速度就能感受到差异——uv 本身是个静态编译的 Rust 二进制,没有 Python 依赖。
pip 的直接替代
uv 可以作为 pip 的 drop-in replacement,命令基本一致:
# 安装包
uv pip install requests flask numpy
# 从 requirements.txt 安装
uv pip install -r requirements.txt
# 卸载
uv pip uninstall requests
# 查看已安装包
uv pip list
# 冻结依赖
uv pip freeze > requirements.txt
速度差异有多大?在一个有约 80 个依赖的项目上测试冷启动安装(无缓存):
pip install -r requirements.txt:47 秒uv pip install -r requirements.txt:4.2 秒
大约 10 倍 的速度提升。这主要来自并行下载、并行安装和 Rust 实现的依赖解析器。
虚拟环境管理
# 创建虚拟环境
uv venv
# 指定 Python 版本
uv venv --python 3.12
# 激活(和标准 venv 一样)
source .venv/bin/activate
uv 还能自动管理 Python 版本:
# 安装特定版本的 Python
uv python install 3.12
# 列出可用版本
uv python list
项目管理
uv 提供了类似 poetry/pdm 的项目管理功能:
# 初始化项目
uv init my-project
cd my-project
# 添加依赖(自动更新 pyproject.toml 和 uv.lock)
uv add requests
uv add --dev pytest ruff
# 同步环境(根据 lock 文件安装)
uv sync
# 运行项目中的命令
uv run python main.py
uv run pytest
uv.lock 是确定性的 lock 文件(类似 poetry.lock),保证不同环境安装完全一致的依赖版本。
与 pip / poetry 对比
| 功能 | pip | poetry | uv |
|---|---|---|---|
| 安装速度 | 基准 | 略慢于 pip | 10-100x 快 |
| 依赖解析 | 基础 | 完整 | 完整且极快 |
| lock 文件 | 无 | poetry.lock | uv.lock |
| 虚拟环境 | 需要 venv | 内置 | 内置 |
| Python 版本管理 | 无 | 无 | 内置 |
| pyproject.toml | 部分支持 | 完整 | 完整 |
| 实现语言 | Python | Python | Rust |
uv 的主要优势就是快。依赖解析、下载、安装全部并行化,Rust 实现避免了 Python 的性能瓶颈。在 CI/CD 场景下这个速度差异尤其明显——每次构建少等几十秒,累积下来很可观。
总结
uv 目前还在快速迭代,部分边缘情况的兼容性不如成熟的 pip。但作为日常开发工具,它已经足够稳定。如果你受够了 pip install 的龟速,uv 值得一试。