1. 什么是 uv?
uv 是一个由 Astral 开发的 高性能 Python 包管理和项目管理工具,用 Rust 编写,旨在取代传统的 Python 工具(如 pip
、virtualenv
、poetry
、甚至部分 pyenv
功能)。它以极快的速度和现代化的设计著称,号称比 pip
快 10-100 倍,比 Poetry 快 2-10 倍。uv 的目标是提供一个统一的、一站式的 Python 开发体验,涵盖包安装、虚拟环境管理、项目管理和 Python 版本管理。
核心特点:
- 速度极快:Rust 实现,依赖解析和安装速度远超 Python 工具。
- 多功能:集成了
pip
(通过uv pip
)、venv
、poetry
和pyenv
的功能。 - 标准兼容:支持 PEP 621(
pyproject.toml
项目元数据)和 PEP 582(本地 Python 版本管理)。 - 跨平台:支持 macOS、Linux、Windows。
- 简单集成:与现有工具(如 pyenv、Poetry 项目)兼容,易于迁移。
uv 的主要子命令:
uv pip
:快速替代pip
,用于安装、卸载包,兼容requirements.txt
。uv venv
:创建虚拟环境,速度比python -m venv
快 80 倍。uv add
/uv remove
:管理项目依赖,更新pyproject.toml
。uv sync
:同步依赖到虚拟环境,类似poetry install
。uv run
:运行脚本,自动激活虚拟环境。uv python
:管理 Python 版本(下载、安装、切换)。uv lock
:生成uv.lock
,锁定依赖版本。uv build
/uv publish
:构建和发布 Python 包。
2. uv 的功能分解
uv 的设计目标是“一个工具解决所有问题”,以下是它的主要功能:
包管理:
- 类似
pip
,但更快、更智能。 - 示例:
安装uv pip install requests
requests
,速度比pip install requests
快数倍。 - 支持
requirements.txt
和直接依赖:uv pip install -r requirements.txt
- 类似
虚拟环境管理:
- 自动创建虚拟环境,默认存储在项目目录的
.venv
。 - 示例:
uv venv source .venv/bin/activate
uv sync
自动创建并同步依赖:uv sync
- 自动创建虚拟环境,默认存储在项目目录的
项目管理:
- 初始化项目、添加依赖、生成锁文件。
- 使用标准的
pyproject.toml
(兼容 PEP 621):[project] name = "my-project" version = "0.1.0" dependencies = ["requests>=2.28.0"]
- 示例:
uv init my-project cd my-project uv add requests uv lock
Python 版本管理:
- 内置 Python 解释器管理,无需 pyenv。
- 通过
.python-version
文件指定版本:echo "3.12" > .python-version uv python install 3.12
- uv 会自动下载所需版本(类似 pyenv 的
pyenv install 3.12.0
)。
锁文件:
- 生成
uv.lock
,确保跨平台依赖一致性。 - 比 Poetry 的
poetry.lock
更轻量,解析更快。
- 生成
构建与发布:
- 支持打包(
uv build
)和发布(uv publish
),类似 Poetry 的poetry publish
。 - 示例:
uv build uv publish
- 支持打包(
3. uv 的安装和使用(macOS)
假设你在 macOS 上(结合你之前的 pyenv 和 Poetry 讨论),以下是安装 uv 的步骤:
安装 uv:
- 通过 Homebrew(推荐):
brew install uv
- 或通过 pip(较慢):
pip install uv
- 验证:
uv --version
- 通过 Homebrew(推荐):
初始化项目:
uv init my-project cd my-project
设置 Python 版本:
uv python install 3.12 echo "3.12" > .python-version
添加依赖:
uv add requests uv sync # 创建 .venv,安装依赖
运行脚本:
uv run main.py
4. uv 的优势和局限
优势
- 速度:比 Poetry 快 2-10 倍,比 pip 快 10-100 倍。
- 一站式:无需 pyenv、pip、virtualenv,所有功能内置。
- 标准兼容:
pyproject.toml
遵循 PEP 621,易于迁移。 - 灵活性:支持
uv pip
兼容旧工作流,uv python
管理版本。
局限
- 新工具:生态不如 Poetry 成熟,社区支持较小(截至 2025 年 4 月)。
- CLI 复杂:命令多(
uv add
、uv pip
、uv run
),学习曲线稍陡。 - 依赖组:支持较弱(仅
--dev
等),不如 Poetry 的多组(如dev
、test
)。 - 文档:Poetry 文档更详尽,uv 文档仍在完善。
总结
uv 是什么:
- 高性能 Python 工具,集包管理(
uv pip
)、虚拟环境(uv venv
)、项目管理(uv add
)、Python 版本管理(uv python
)于一体。 - 用 Rust 编写,速度远超 Poetry 和 pip。
- 高性能 Python 工具,集包管理(
与 Poetry 的关系:
- uv 功能更广(包括 Python 版本管理),配置更简洁(无
poetry.toml
)。 - Poetry CLI 简单,适合复杂项目。
- uv 功能更广(包括 Python 版本管理),配置更简洁(无