# UV —— 用 Rust 重塑 Python 包管理,10-100 倍性能提升
## 项目介绍
UV 是由 Astral 公司( Ruff 和 Ty 的开发商)用 Rust 编写的极速 Python 包和项目管理器。Astral 团队以”极致性能”著称,UV 将 Python 包安装速度提升了 10-100 倍,同时用一个工具替代了 pip、pip-tools、pipx、poetry、pyenv、virtualenv、twine 等多个传统工具。
UV 支持 macOS、Linux 和 Windows,安装简单无需 Python 或 Rust 环境,一行命令即可完成安装。由于其卓越的性能表现,UV 已被越来越多的 Python 项目采用,部分 Python 框架已将其纳入 CI/CD 默认工具链。
## 核心特色功能
**极速性能**:UV 使用 Rust 编写并优化了大量核心操作,安装依赖的速度比 pip 快 10-100 倍。基准测试显示,安装一个中等规模项目的所有依赖,UV 只需几秒,而 pip 需要几分钟。
**统一工具链**:用一个 UV 替代所有传统 Python 工具:
– pip → `uv pip install`
– pip-tools → `uv pip compile`
– pipx → `uv tool install`
– poetry → `uv add` / `uv sync`
– pyenv → `uv python install`
– virtualenv → `uv venv`(自动创建)
**通用锁文件**:UV 使用跨项目共享的 lockfile,所有项目共享同一个全局依赖缓存,节省磁盘空间。
**脚本支持**:UV 支持直接运行 Python 脚本,脚本头部可以内嵌依赖声明:
“`python
# /// script
# requires-python = “>=3.11”
# dependencies = [
# “requests”,
# “rich”,
# ]
# ///
import requests
from rich.inspect import inspect
print(“Hello from UV!”)
“`
运行脚本时会自动安装依赖:`uv run script.py`
**Python 版本管理**:内置 Python 版本安装和管理功能,一条命令即可安装不同版本:
“`bash
uv python install 3.11 3.12 3.13
uv python list # 查看已安装版本
“`
**全局工具管理**:像 pipx 一样安装全局可用的 CLI 工具:
“`bash
uv tool install httpie
uv tool run httpie GET example.com
“`
**Cargo 风格工作区**:支持 monorepo 风格的多项目管理工作区(workspace)。
**磁盘高效**:所有依赖全局共享缓存,同一包的不同版本只存一份,节省大量磁盘空间。
## 安装步骤
**macOS / Linux(官方安装脚本)**:
“`bash
curl -LsSf https://astral.sh/uv/install.sh | sh
“`
**Windows(PowerShell)**:
“`powershell
powershell -ExecutionPolicy ByPass -c “irm https://astral.sh/uv/install.ps1 | iex”
“`
**通过 pip/pipx 安装**(不要求系统已有 UV):
“`bash
pip install uv
# 或
pipx install uv
“`
**更新 UV**:
“`bash
uv self update
“`
## 基本使用教程
### 创建新项目
“`bash
uv init myproject
cd myproject
“`
这会创建一个标准 Python 项目结构:
“`
myproject/
├── pyproject.toml
├── src/
│ └── myproject.py
├── README.md
└── .python-version
“`
### 添加依赖
“`bash
uv add requests rich
“`
这会自动更新 pyproject.toml 和 lockfile,并安装依赖。
### 安装项目依赖
“`bash
uv sync
“`
### 运行脚本
“`bash
uv run python script.py
“`
### 替代 pip
最常见的用法是替代 pip,直接用 uv 安装包:
“`bash
uv pip install flask django requests
“`
### 冻结依赖
“`bash
uv pip freeze > requirements.txt
“`
### 创建虚拟环境
“`bash
uv venv
# 指定 Python 版本
uv venv –python 3.12
“`
激活虚拟环境:
“`bash
source .venv/bin/activate # Linux/macOS
# Windows: .venv\Scripts\activate
“`
## 使用 requirements.in 编译
传统 pip-compile 工作流:
“`bash
# 创建 requirements.in
echo “requests>=2.28” > requirements.in
# 编译为 requirements.txt(锁定精确版本)
uv pip compile requirements.in -o requirements.txt
# 从 requirements.txt 安装
uv pip sync requirements.txt
“`
## 在 CI/CD 中使用
UV 特别适合 CI 环境,因为其极速安装可以显著缩短 CI 构建时间。
**GitHub Actions 示例**:
“`yaml
– name: Install UV
uses: astral-sh/setup-uv@v4
– name: Install dependencies
run: uv sync –frozen
– name: Run tests
run: uv run pytest
“`
setup-uv Action 会自动缓存 UV 和依赖,让 CI 速度极快。
## 与 Docker 配合
在 Docker 构建中使用 UV:
“`dockerfile
FROM python:3.12-slim
# 安装 UV
COPY –from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/uv
WORKDIR /app
COPY pyproject.toml uv.lock ./
RUN uv sync –frozen –no-dev
COPY . .
CMD [“uv”, “run”, “python”, “main.py”]
“`
这样构建出的 Docker 镜像只包含运行时代码和依赖,没有 UV 工具本身,体积很小。
## 常用命令一览
| 功能 | 命令 |
|——|——|
| 安装包 | `uv pip install
| 卸载包 | `uv pip uninstall
| 列出已安装 | `uv pip freeze` |
| 创建项目 | `uv init
| 添加依赖 | `uv add
| 同步依赖 | `uv sync` |
| 运行脚本 | `uv run

