简介
uv 是由 Astral(Ruff 的作者)团队使用 Rust 编写的 Python 包和项目管理器。它旨在用单一工具统一替代传统 Python 开发中的多件套:
pip → 包安装
virtualenv / venv → 虚拟环境
pip-tools → 依赖锁定
pyenv → Python 版本管理
pipx → 工具安装
poetry → 项目管理
截至 2026 年,uv 在 PyPI 月下载量已超过 1.26 亿,成为 Python 生态中增长最快的工具。
核心优势
| 特性 |
说明 |
| 极快速度 |
Rust 实现 + 并行下载 + 智能缓存,比 pip 快 10-100 倍 |
| 统一入口 |
一个工具覆盖包管理、虚拟环境、版本管理、工具安装 |
| 空间高效 |
全局缓存与包去重,减少重复下载和磁盘占用 |
| 兼容生态 |
完全兼容 pip 的命令行接口和 requirements.txt 格式 |
| 可移植 |
uv.lock 提供跨平台一致的依赖锁定结果 |
| 轻量无依赖 |
单二进制文件(约 10-15MB),无需 Python 解释器即可运行 |
安装
官方推荐(跨平台)
1 2 3 4 5
| curl -LsSf https://astral.sh/uv/install.sh | sh
irm https://astral.sh/uv/install.ps1 | iex
|
其他方式
1 2 3 4 5 6 7 8 9 10 11 12 13
| brew install uv
scoop install uv
pip install uv
pipx install uv
COPY --from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/uv
|
验证安装
核心功能
1. 项目管理(推荐用法)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| uv init my-project cd my-project
uv add requests fastapi
uv add --dev pytest ruff
uv remove requests
uv lock
uv sync
|
项目结构:
1 2 3 4 5 6 7 8
| my-project/ ├── .python-version # Python 版本锁定 ├── pyproject.toml # 项目配置 + 依赖声明 ├── uv.lock # 精确依赖锁定(应提交 Git) ├── README.md └── src/ └── my_project/ └── __init__.py
|
2. 运行代码
1 2 3 4 5 6 7 8
| uv run python main.py
uv run pytest
uv run script.py
|
3. 虚拟环境管理
1 2 3 4 5 6 7 8
| uv venv
uv venv --python 3.11
uv venv myenv
|
4. Python 版本管理
1 2 3 4 5 6 7 8
| uv python install 3.12 3.13
uv python pin 3.12
uv python list --only-installed
|
5. 兼容 pip 模式
1 2 3 4 5 6 7 8 9 10 11
| uv pip install requests
uv pip install -r requirements.txt
uv pip freeze > requirements.txt
uv pip list
|
6. 全局工具管理(替代 pipx)
1 2 3 4 5 6 7 8
| uv tool install ruff
uvx pycowsay 'hello'
uv tool list
|
7. 单文件脚本(内联依赖)
在脚本头部直接声明依赖,无需创建完整项目:
1 2 3 4 5 6 7 8 9
|
import requests from rich import print
resp = requests.get("https://api.github.com") print(resp.json())
|
运行方式:
从现有项目迁移
从 pip + requirements.txt
1 2 3 4 5 6 7 8 9 10 11
| cd existing-project
uv init
uv pip install -r requirements.txt
|
从 Poetry
CI/CD 集成
GitHub Actions
1 2 3 4 5 6 7 8 9 10
| name: CI on: [push, pull_request] jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: astral-sh/setup-uv@v5 - run: uv sync --frozen - run: uv run pytest
|
与传统工具对比
| 操作 |
传统方式 |
uv 方式 |
| 创建虚拟环境 |
python -m venv .venv (~800ms) |
uv venv (~10ms) |
| 安装包 |
pip install requests |
uv pip install requests 或 uv add requests |
| 锁定依赖 |
pip-tools + pip-compile |
uv lock |
| 同步依赖 |
pip-sync |
uv sync |
| 管理 Python 版本 |
pyenv install 3.12 |
uv python install 3.12 |
| 运行 CLI 工具 |
pipx run ruff |
uvx ruff |
| 导出依赖 |
pip freeze > requirements.txt |
uv pip freeze |
常见问题
缓存管理
1 2 3 4 5
| uv cache info
uv cache clean
|
更新 uv
总结
uv 是 Python 包管理工具的未来方向。它以极致的速度、统一的功能集和对现有生态的兼容性,正在成为 Python 开发者的首选工具。无论是个人项目、团队协作还是 CI/CD 流水线,uv 都能显著提升开发效率。