Python uv包管理器:pip的终结者?

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 值得一试。