uv 是由 Astral (Rust 编写的 Ruff 代码检查工具团队)开发的极速 Python 包与项目管理器 ,用 Rust 写成,旨在替代 pip、pip-tools、virtualenv、poetry 等工具,统一管理 Python 项目中的依赖、虚拟环境和 Python 版本。
核心功能一览
| 功能 | 对应传统工具 | 说明 |
|---|---|---|
uv venv |
virtualenv / python -m venv |
创建虚拟环境(速度极快) |
uv pip install |
pip install |
安装依赖(兼容 pip 命令) |
uv pip compile |
pip-compile |
生成精确的锁文件(requirements.txt) |
uv pip sync |
pip-sync |
将环境同步为锁文件状态 |
uv run |
手动激活环境 + 运行脚本 | 自动检测/创建环境并执行命令 |
uv init / uv add / uv remove / uv lock |
poetry / pipenv |
项目管理(pyproject.toml) |
uv python install/list/find |
pyenv |
管理 Python 解释器版本 |
为什么选择 uv?
-
快到惊人
-
用 Rust 实现,并行下载、解析和安装,安装速度常比 pip 快 10--100 倍(尤其依赖解析阶段)。
-
全局缓存机制,重复依赖几乎瞬间完成。
-
-
完全兼容 PyPI 和 pip 工作流
支持
requirements.txt、pyproject.toml,可以直接替代 pip 命令(如uv pip install torch)。 -
一体化项目管理
用
uv init创建项目,uv add添加依赖,自动生成pyproject.toml和uv.lock,锁定所有依赖版本。 -
零配置 Python 管理
可下载安装任意 CPython 版本(甚至 PyPy),项目可指定所需 Python 版本,
uv run自动处理。 -
跨平台,单文件分发
无需 Python 或 Rust 预装,下载即用。
安装 uv
Linux / macOS:
bash
curl -LsSf https://astral.sh/uv/install.sh | sh
Windows (PowerShell):
powershell
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
或使用 pip:
bash
pip install uv
安装后验证:
bash
uv --version
常用命令速查
1. 虚拟环境
bash
# 创建虚拟环境(默认 .venv 目录)
uv venv
# 指定 Python 版本创建
uv venv --python 3.12
2. 依赖安装(pip 风格)
bash
# 安装单个包
uv pip install requests
# 从 requirements.txt 安装
uv pip install -r requirements.txt
# 生成锁定文件
uv pip compile pyproject.toml -o requirements.txt
# 根据锁定文件同步环境(移除多余包)
uv pip sync requirements.txt
3. 项目管理(poetry 风格)
bash
# 初始化新项目
uv init my-project
cd my-project
# 添加依赖
uv add fastapi uvicorn
# 添加开发依赖
uv add --dev pytest black
# 移除依赖
uv remove requests
# 锁定当前依赖
uv lock
# 从锁文件同步安装
uv sync
4. 运行脚本(自动管理环境)
bash
# 在项目环境中直接运行脚本(无需手动激活 venv)
uv run python main.py
# 运行一次性命令
uv run --with flask python -c "import flask; print(flask.__version__)"
5. Python 版本管理
bash
# 列出可安装的 Python 版本
uv python list
# 安装特定版本
uv python install 3.12
# 查看已安装版本
uv python list --only-installed
假设你要用本地 Ollama 开发一个 API 服务,用 uv 管理项目:
bash
# 创建项目
uv init ollama-api
cd ollama-api
# 添加依赖
uv add openai
此后任何人克隆项目后只需 uv sync 即可复现完全相同的环境。
uv vs 传统工具对比
| 特性 | uv | pip + venv | Poetry | pip-tools |
|---|---|---|---|---|
| 速度 | ⚡️ 极快 | 🐢 慢 | 🐇 快 | 🐇 较快 |
| 锁文件 | ✅ uv.lock | ❌ | ✅ poetry.lock | ✅ requirements.txt |
| 虚拟环境自动管理 | ✅ | ❌ | ✅ | ❌ |
| 项目管理 | ✅ | ❌ | ✅ | ❌ |
| Python 版本管理 | ✅ | ❌ | ❌ | ❌ |
| 与 pip 命令兼容 | ✅ | ✅ | ❌ | ✅ |
💡 总结
uv 把 pip 的速度问题、venv 的繁琐激活、pyenv 的版本管理、poetry 的项目管理集于一身,是当前 Python 生态里最令人兴奋的工具之一。无论你是个人开发还是团队协作,都可以用 uv 获得丝滑、极速的依赖管理体验。