Python 开发者终于不用在 pippoetrypipenv 之间纠结了。由 Ruff 背后的 Astral 团队打造的 uv,正在以惊人的速度改变 Python 包管理的格局。

uv 是什么?

uv 是一个用 Rust 编写的 Python 包和项目管理工具,设计目标只有一个:极致的速度

特性 说明
包安装 兼容 pip 的依赖解析与安装
项目管理 替代 poetry/pipenv,管理虚拟环境和依赖
缓存机制 全局缓存 + 硬链接,秒级重复安装
多 Python 版本 自动安装和管理多个 Python 版本
零配置工作流 uv init + uv add 即可开始
许可证 MIT(完全开源)

Astral 团队(也是 Ruff 的作者)把他们在 Rust 高性能工具链上的经验全部倾注到了 uv 上,结果就是:比 pip 快 10-100 倍

📦 GitHub: https://github.com/astral-sh/uv ⭐ Stars: 50k+ (2026 年中) 📄 License: MIT

安装 uv

uv 的安装方式极其简单,一行命令搞定:

# 官方推荐方式 — 安装脚本
curl -LsSf https://astral.sh/uv/install.sh | sh

安装完成后验证:

uv --version
# uv 0.7.x

如果你使用 Homebrew(macOS/Linux):

brew install uv

或者用 pipx:

pipx install uv

快速上手:创建第一个项目

初始化项目

# 创建新项目(自动生成 pyproject.toml + 虚拟环境)
uv init my-app
cd my-app

看看生成的文件结构:

my-app/
├── .python-version    # 锁定 Python 版本
├── pyproject.toml     # 项目配置
├── README.md
├── main.py
└── uv.lock            # 依赖锁定文件

pyproject.toml 内容非常干净:

[project]
name = "my-app"
version = "0.1.0"
description = "Add your description here"
requires-python = ">=3.12"
dependencies = []

添加依赖

# 添加生产依赖(自动解析 + 安装 + 锁定)
uv add requests
uv add fastapi
uv add "pydantic>=2.0"

# 添加开发依赖
uv add --dev pytest ruff mypy

一条命令同时完成:依赖解析 → 下载 → 安装 → 更新 uv.lock,整个过程通常只需几秒。

运行代码

# 在虚拟环境中运行脚本
uv run python main.py

# 运行已安装的工具
uv run pytest
uv run ruff check .

uv run 会自动激活项目虚拟环境,不需要手动 source .venv/bin/activate

进阶功能

多 Python 版本管理

uv 内置了 Python 版本管理器,可以自动下载和管理多个 Python 版本:

# 查看已安装的 Python 版本
uv python list

# 安装特定版本的 Python
uv python install 3.13
uv python install 3.11

# 为项目指定 Python 版本
uv python pin 3.13

# 在特定版本下运行
uv run --python 3.11 python main.py

这解决了长期困扰 Python 开发者的痛点 — 不再需要 pyenv。

工作区(Workspace)

如果你的项目有多个包,uv 的工作区功能非常适合:

# 初始化工作区
uv init --package packages/core
uv init --package packages/cli

pyproject.toml

[tool.uv.workspace]
members = ["packages/*"]

脚本管理

uv 支持在 pyproject.toml 中定义脚本别名:

[tool.uv.scripts]
dev = "uvicorn main:app --reload"
test = "pytest tests/"
lint = "ruff check . && mypy src/"

然后直接运行:

uv run dev
uv run test

CI/CD 集成

在 GitHub Actions 中使用 uv:

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Install uv
        uses: astral-sh/setup-uv@v5
        with:
          enable-cache: true

      - name: Set up Python
        run: uv python install

      - name: Install dependencies
        run: uv sync --frozen

      - name: Run tests
        run: uv run pytest

enable-cache: true 会缓存 uv 的包下载,CI 速度提升非常明显。

与 pip/poetry 的速度对比

以下是 Astral 官方提供的基准测试数据(安装 Django 及其所有依赖):

工具 首次安装 缓存安装
pip ~15s ~3s
poetry ~20s ~5s
uv ~1.5s ~0.3s

uv 快的核心原因:

  1. Rust 实现 — 依赖解析引擎用 Rust 编写,比 Python 快几个数量级
  2. 全局缓存 — 包下载后全局缓存,项目间通过硬链接共享
  3. 并行下载 — 同时下载多个包,充分利用网络带宽
  4. 智能缓存 — 解析结果也会被缓存,避免重复计算

从 pip/poetry 迁移

从 pip 迁移

# 用现有 requirements.txt 创建项目
uv pip install -r requirements.txt

# 或者创建新项目后导入
uv init
uv add -r requirements.txt

从 poetry 迁移

# 直接从 pyproject.toml 同步依赖
uv sync

# 如果需要重新锁定
uv lock

uv 完全兼容 pyproject.toml 格式,大多数 poetry 项目可以直接切换。

实用命令速查

# 项目管理
uv init <name>           # 创建新项目
uv add <package>         # 添加依赖
uv remove <package>      # 移除依赖
uv sync                  # 同步依赖(类似 pip install -e .)
uv lock                  # 重新锁定依赖

# 运行
uv run <command>         # 在虚拟环境中运行命令
uv tool run <tool>       # 运行临时工具(类似 pipx run)
uv tool install <tool>   # 安装全局工具

# Python 管理
uv python install <ver>  # 安装 Python 版本
uv python list           # 列出已安装版本
uv python pin <ver>      # 固定项目 Python 版本

# 缓存
uv cache dir             # 查看缓存目录
uv cache clean           # 清理缓存

总结

uv 正在成为 Python 开发者的新标准工具。它由 Ruff 团队打造,速度极快,API 设计简洁,而且完全开源。

推荐场景:

  • ✅ 新项目 — 直接用 uv init 开始
  • ✅ CI/CD — 缓存友好,构建速度显著提升
  • ✅ 多 Python 版本项目 — 内置版本管理
  • ✅ 从 poetry/pipenv 迁移 — 兼容 pyproject.toml

如果你还在用 pip + venv 或者 poetry,强烈建议试试 uv — 一旦体验过秒级安装的速度,就回不去了。

🔗 官方文档: https://docs.astral.sh/uv/ 🔗 GitHub: https://github.com/astral-sh/uv