你是否也被 Pip 的慢速安装、复杂依赖和频繁报错折磨过?在 Python 开发中,包管理绕不开,但传统工具链经常让人爱恨交加。

UV 是 Astral 推出的新一代 Python 包管理工具。它用 Rust 编写,主打更快的安装速度、更可靠的依赖解析,以及覆盖虚拟环境、Python 版本和项目管理的完整工作流。

UV 项目介绍

版本提示: 本文截图和命令来自 2025 年 7 月,uv 功能迭代较快。请使用官方最新稳定版,并以官方文档为准。

什么是 UV?

UV 由 Astral 团队开发,目标是为 Python 提供 更快、更可靠、更易用 的包管理体验。

它不是简单包装 Pip,而是重新实现了包解析、下载、缓存和虚拟环境管理等核心流程。官方宣传在常见场景中可比传统工具快 10 到 100 倍,并试图用 uv 覆盖 pip、pip-tools、pipx、poetry、pyenv、virtualenv 等工具的常见使用场景。

UV 性能对比

项目地址:https://github.com/astral-sh/uv

UV GitHub 仓库

官方文档:https://docs.astral.sh/uv

UV 官方文档

中文文档:https://hellowac.github.io/uv-zh-cn/

UV 中文文档

为什么选择 UV?

  1. 速度快

    • 并行下载、全局缓存和 Rust 实现让依赖安装明显提速;
    • 项目越大、依赖越复杂,收益通常越明显。
  2. 上手成本低

    • uv pip 命令与 pip 大致相似;
    • 现有 requirements.txt 可以直接迁移。
  3. 依赖解析更强

    • 提供确定性锁定和同步能力,减少版本冲突;
    • 支持项目级 pyproject.toml 和锁文件。
  4. 工具链整合

    • 一个命令即可管理虚拟环境、Python 版本、项目依赖、脚本运行和构建发布。
  5. 跨平台

    • 支持 macOS、Linux 和 Windows。

安装 UV

方式一:官方安装脚本

1
2
3
4
5
# macOS / Linux
curl -LsSf https://astral.sh/uv/install.sh | sh

# Windows PowerShell
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

使用官方脚本安装 UV

方式二:从 PyPI 安装

1
2
3
4
pip install uv

# 或
pipx install uv

从 PyPI 安装 UV

官方安装脚本安装的 uv 可以自更新:

1
uv self update

更新 UV

快速上手

创建虚拟环境

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 默认创建 .venv
uv venv

# 指定 Python 版本
uv venv -p 3.10

# macOS / Linux 激活
source .venv/bin/activate

# Windows 激活
.venv\Scripts\activate

# 安装依赖
uv pip install fastapi "uvicorn[standard]"

创建虚拟环境并安装依赖

使用 uv pip

uv pip 提供与 pip 相似的使用方式:

1
2
3
4
5
6
7
8
9
10
11
12
# 安装包
uv pip install fastapi
uv pip install "uvicorn[standard]"

# 升级包
uv pip install -U requests

# 从 requirements.txt 安装
uv pip install -r requirements.txt

# 卸载包
uv pip uninstall fastapi

依赖锁定与同步

UV 也整合了 pip-tools 常用的依赖编译能力。

创建 requirements.in:

1
2
requests
httpx

锁定具体版本:

1
uv pip compile requirements.in -o requirements.txt

常用参数:

  • --upgrade:尽量升级到最新可用版本;
  • --resolution=lowest:锁定最低兼容版本。

同步环境:

1
uv pip sync requirements.txt

sync 会按锁定文件安装依赖,并卸载环境中多余的包,适合需要严格一致环境的场景。

管理 Python 版本

常用命令:

  • uv python install:安装 Python 版本;
  • uv python list:查看可用版本;
  • uv python find:查找已安装版本;
  • uv python pin:为项目固定 Python 版本;
  • uv python uninstall:卸载版本。

UV 管理 Python 版本

运行脚本和管理项目

脚本相关命令:

  • uv run:在对应环境中运行脚本;
  • uv add --script:为脚本添加依赖;
  • uv remove --script:移除脚本依赖。

UV 脚本依赖

项目相关命令:

  • uv init:创建项目;
  • uv add:添加依赖;
  • uv remove:移除依赖;
  • uv sync:同步项目环境;
  • uv lock:更新锁文件;
  • uv tree:查看依赖树;
  • uv build:构建分发包;
  • uv publish:发布到包索引。

创建示例项目:

1
2
uv init hello-world
cd hello-world

uv init 生成的项目文件

运行示例:

1
uv run

运行 Hello World

生成的 pyproject.toml 类似如下:

1
2
3
4
5
6
7
[project]
name = "hello-world"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.10"
dependencies = []

添加和移除依赖:

1
2
uv add requests
uv remove requests

uv add 管理项目依赖

迁移建议

  • 先在普通项目中试用 uv pip install -r requirements.txt,确认依赖能正常解析;
  • 团队项目建议逐步迁移到 pyproject.toml 和锁文件;
  • 不要在未验证的情况下直接替换生产环境构建脚本;
  • 如果依赖私有索引,先确认 uv 的索引配置与认证方式。

总结

UV 把速度、依赖解析、虚拟环境、Python 版本管理和项目工作流整合到一个工具中,确实能减少 Python 项目日常管理的摩擦。

如果你还在忍受 Pip 的慢速安装和复杂依赖,建议先在个人项目里试一试 UV。