Code技术
uv:新一代 Python 包管理器完全指南
253
Zero超管
2025/11/29·发布 2025/11/27

用 Rust 编写的极速 Python 包管理器,一个工具替代 pip、pip-tools、pipx、poetry、pyenv、virtualenv 等

为什么选择 uv?

如果你还在用 pip + virtualenv + pyenv 的组合来管理 Python 环境,是时候考虑换一个更现代的工具了。uv 是 Astral 公司(也是 Ruff 的开发者)推出的 Python 包管理工具,用 Rust 编写,速度比传统工具快 10-100 倍。

核心优势:

  • 极速:依赖解析和安装速度碾压传统工具
  • 全能:一个工具搞定 Python 版本管理、虚拟环境、包管理、脚本运行
  • 兼容:提供 uv pip 接口,无缝迁移现有工作流
  • 跨平台:生成的 lockfile 支持多平台

1. 安装 uv

macOS / Linux

Bash
1curl -LsSf https://astral.sh/uv/install.sh | sh

Windows (PowerShell)

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

其他方式

Bash
1# 使用 pip(不推荐作为主要安装方式)
2pip install uv
3
4# 使用 Homebrew
5brew install uv
6
7# 使用 Cargo
8cargo install --locked uv

安装后,运行 uv 验证安装成功。后续升级只需:

Bash
1uv self update

2. Python 版本管理

uv 内置了 Python 版本管理功能,可以替代 pyenv。

安装 Python

Bash
1# 安装指定版本
2uv python install 3.12
3
4# 安装多个版本
5uv python install 3.10 3.11 3.12
6
7# 安装 PyPy
8uv python install pypy@3.10

查看已安装版本

Bash
1uv python list

自动下载

uv 最方便的特性之一是自动下载 Python。如果系统没有需要的版本,uv 会自动下载安装:

Bash
1# 即使系统没有 Python 3.12,这个命令也能执行
2uv venv --python 3.12

3. 项目管理(推荐方式)

uv 的项目管理模式使用 pyproject.toml + uv.lock,是最推荐的工作流。

创建新项目

Bash
1# 创建应用项目
2uv init myproject
3cd myproject
4
5# 创建库项目(会配置构建系统)
6uv init --lib mylib

生成的目录结构:

Plain Text
1myproject/
2├── .python-version    # 项目使用的 Python 版本
3├── .venv/             # 虚拟环境(首次运行时创建)
4├── pyproject.toml     # 项目配置和依赖
5├── uv.lock            # 锁定文件
6├── main.py
7└── README.md

添加依赖

Bash
1# 添加依赖
2uv add requests
3uv add "fastapi>=0.100"
4
5# 添加开发依赖
6uv add --dev pytest ruff
7
8# 从 requirements.txt 导入
9uv add -r requirements.txt

移除依赖

Bash
1uv remove requests

运行项目

Bash
1# 运行脚本(自动同步依赖)
2uv run main.py
3
4# 运行任意命令
5uv run python -c "import requests; print(requests.__version__)"
6
7# 运行 pytest
8uv run pytest

uv run 会自动确保虚拟环境与 lockfile 同步,无需手动 pip install

同步环境

Bash
1# 同步依赖到虚拟环境
2uv sync
3
4# 仅安装生产依赖
5uv sync --no-dev

4. 脚本模式(单文件依赖)

对于单文件脚本,uv 支持 PEP 723 的内联脚本元数据,无需创建完整项目。

创建带依赖的脚本

Bash
1# 创建脚本并添加依赖
2echo 'import requests; print(requests.get("https://httpbin.org/ip").json())' > script.py
3uv add --script script.py requests

这会在脚本顶部添加元数据注释:

Python
1# /// script
2# dependencies = [
3#   "requests",
4# ]
5# ///
6
7import requests
8print(requests.get("https://httpbin.org/ip").json())

运行脚本

Bash
1uv run script.py

uv 会自动创建临时虚拟环境并安装依赖,脚本完全自包含,方便分享。


5. 工具运行(替代 pipx)

uvx 命令可以在临时环境中运行 Python CLI 工具,无需全局安装。

临时运行工具

Bash
1# 运行 ruff
2uvx ruff check .
3
4# 运行 black
5uvx black --check .
6
7# 运行特定版本
8uvx ruff@0.4.0 check .
9
10# 当包名和命令名不同时
11uvx --from httpie http httpbin.org/ip

全局安装工具

如果某个工具需要频繁使用,可以全局安装:

Bash
1# 安装工具
2uv tool install ruff
3
4# 查看已安装工具
5uv tool list
6
7# 升级工具
8uv tool upgrade ruff
9
10# 卸载
11uv tool uninstall ruff

6. pip 兼容模式

如果你习惯 pip 的使用方式,或者需要迁移现有项目,可以使用 uv pip 接口。

创建虚拟环境

Bash
1uv venv
2
3# 指定 Python 版本
4uv venv --python 3.11
5
6# 指定目录
7uv venv .venv-dev

安装包

Bash
1# 激活环境后
2source .venv/bin/activate  # Linux/macOS
3# 或 .venv\Scripts\activate  # Windows
4
5# 安装包
6uv pip install requests flask
7
8# 从 requirements.txt 安装
9uv pip install -r requirements.txt
10
11# 可编辑安装
12uv pip install -e .

生成锁定文件

Bash
1# 从 requirements.in 生成 requirements.txt
2uv pip compile requirements.in -o requirements.txt
3
4# 跨平台通用锁定
5uv pip compile requirements.in --universal -o requirements.txt
6
7# 同步环境到锁定文件
8uv pip sync requirements.txt

7. 常用命令速查

场景命令
创建项目uv init myproject
添加依赖uv add requests
添加开发依赖uv add --dev pytest
运行脚本uv run main.py
同步依赖uv sync
运行工具uvx ruff check .
安装工具uv tool install ruff
安装 Pythonuv python install 3.12
创建虚拟环境uv venv
升级 uvuv self update

8. 配置文件示例

pyproject.toml

TOML
1[project]
2name = "myproject"
3version = "0.1.0"
4description = "My awesome project"
5requires-python = ">=3.10"
6dependencies = [
7    "fastapi>=0.100",
8    "uvicorn",
9]
10
11[dependency-groups]
12dev = ["pytest", "ruff"]
13
14[tool.uv]
15# uv 特定配置
16dev-dependencies = ["pytest>=8.0"]

.python-version

Plain Text
13.12

总结

uv 的核心操作可以概括为:

  1. 项目开发uv inituv adduv run
  2. 脚本运行uv add --scriptuv run
  3. 工具使用uvx 临时运行,uv tool install 全局安装
  4. Python 管理uv python install 自动下载安装

从今天开始用 uv,告别缓慢的 pip 和混乱的环境管理吧!


参考资料uv 官方文档

最后更新 11月29日 10:22

评论 (3)

咖喱KIKI2025-11-28 01:01#1

非常好技术教程,狠狠调教我的 python 目录的说

yuju2025-11-29 10:22#2