uv —— Rust 写的极速 Python 包与项目管理器

# uv —— Rust 写的极速 Python 包与项目管理器

# 1. uv 是什么

uv(读音 /juː viː/,Astral 出品,Ruff 同团队)

官方定位:An extremely fast Python package and project manager, written in Rust

uv 是 Rust 编译出的原生二进制,整合 pip + pip-tools + virtualenv + pyenv + pipx + poetry 的大部分职责。

uv 本身是一个不依赖 Python 运行的独立工具,但它负责“下载、管理、调用、隔离”多个 Python 解释器,是 Python 生态的“调度中心。

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

# 2. uv 怎么装

安装文档: https://docs.astral.sh/uv/getting-started/installation/ (opens new window)

uv提供了一个独立的安装程序,用于下载和安装uv:

# 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"
1
2
3
4
5

在 Windows 上安装 uv 独立程序后,需将其可执行文件所在目录添加到系统或用户 PATH 环境变量中。

或用 pip 安装:

python -m pip install uv
1

验证有没有安装 uv:

where.exe uv
uv --version
1
2

其他命令:

uv self update          # 升级 uv 自己
uv cache clean          # 清缓存
uv -h					# 帮助命令
uv help sync            # 看某子命令帮助
1
2
3
4

命令文档:https://docs.astral.sh/uv/getting-started/features/ (opens new window)

# 3. 核心概念

文件 / 命令 作用
pyproject.toml 项目元数据 + 抽象依赖
uv.lock 精确锁版本(含传递依赖),提交进 git
.venv/ 虚拟环境,uv 自动建,不提交
.python-version 固定项目 Python 版本
uv run xxx 自动同步环境后执行,不需手动 activate

# 4. Python 版本管理(替代 pyenv)

uv python list                      # 已装/可装哪些版本
uv python install 3.12              # 装 CPython 3.12
uv python install 3.11 3.13         # 一次装多个
uv python pin 3.12                  # 当前项目固定某个 Python 版本,例如: 3.12(写 .python-version)
uv python find                      # 当前会用到哪个 python
uv python uninstall 3.11            # 卸掉 uv 管理的版本
uv venv --python 3.12
1
2
3
4
5
6
7

首次会下载预编译 CPython,几秒完事,不编译源码。

项目里没装对应 Python 时,uv venv / uv run自动下载,不用手动预装。

# 5. 新项目(标准工作流)

# 1. 初始化项目(生成 pyproject.toml / .python-version / README)
uv init myproject
cd myproject

# 2. 固定 Python 版本(可选,会自动下载预编译解释器)
uv python pin 3.12

# 3. 加运行依赖
uv add requests pandas

# 4. 加开发依赖
uv add --dev ruff pytest pytest-cov mypy pre-commit

# 5. 跑代码 / 测试(自动用 .venv)
uv run python main.py
uv run pytest

# 6. 别人拉下来复现环境
uv sync          # 按 uv.lock 装
# 或 CI 中用严格模式
uv sync --frozen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

uv add 会自动:改 pyproject.toml → 解析 → 装包 → 更新 uv.lock

# 6. 兼容旧项目(不写 pyproject.toml 也能用)

# 建环境
uv venv

# 用 pip 风格装
uv pip install -r requirements.txt

# 编译锁文件
uv pip compile pyproject.toml -o requirements.txt

# 严格按锁定文件同步
uv pip sync requirements.txt
1
2
3
4
5
6
7
8
9
10
11

👉 老项目零改造享受 uv 速度。

# 7. 跑脚本与 CLI 工具(替代 pipx)

# 单文件脚本内联依赖(PEP 723)
uv run analyze.py

# 临时跑工具,不污染环境(= npx / pipx run)
uvx ruff check .
uvx pycowsay hi

# 永久装工具到 uv 工具区
uv tool install ruff
1
2
3
4
5
6
7
8
9

# 8. 构建与发布

uv build         # 出 sdist + wheel 到 dist/
uv publish       # 传 PyPI(类似 twine)
1
2