uv 是一个由 Astral 开发的 高性能 Python 包管理和项目管理工具,用 Rust 编写,旨在取代传统的 Python 工具(如 pip
、virtualenv
、poetry
、甚至部分 pyenv
功能)。它以极快的速度和现代化的设计著称,号称比 pip
快 10-100 倍,比 Poetry 快 2-10 倍。uv 的目标是提供一个统一的、一站式的 Python 开发体验,涵盖包安装、虚拟环境管理、项目管理和 Python 版本管理。
pip
(通过 uv pip
)、venv
、poetry
和 pyenv
的功能。pyproject.toml
项目元数据)和 PEP 582(本地 Python 版本管理)。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 包。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-version
文件指定版本:echo "3.12" > .python-version
uv python install 3.12
pyenv install 3.12.0
)。锁文件:
uv.lock
,确保跨平台依赖一致性。poetry.lock
更轻量,解析更快。构建与发布:
uv build
)和发布(uv publish
),类似 Poetry 的 poetry publish
。uv build
uv publish
假设你在 macOS 上(结合你之前的 pyenv 和 Poetry 讨论),以下是安装 uv 的步骤:
安装 uv:
brew install uv
pip install uv
uv --version
初始化项目:
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
pyproject.toml
遵循 PEP 621,易于迁移。uv pip
兼容旧工作流,uv python
管理版本。uv add
、uv pip
、uv run
),学习曲线稍陡。--dev
等),不如 Poetry 的多组(如 dev
、test
)。uv 是什么:
uv pip
)、虚拟环境(uv venv
)、项目管理(uv add
)、Python 版本管理(uv python
)于一体。与 Poetry 的关系:
poetry.toml
)。