教程·阅读约 2 分钟·
UV 极速 Python 包管理器:比 pip 快 10 倍的安装体验

UV 极速 Python 包管理器:比 pip 快 10 倍的安装体验

Astral 推出的 UV 用 Rust 重写 Python 包管理,安装速度提升 10 倍,支持全局缓存和锁定文件,正在改变 Python 生态。

原文来源:Astral UV — 用 Rust 编写的极速 Python 包管理器,兼容 pip 但速度提升 10 倍以上,支持全局缓存、锁定文件和 monorepo 工作区。

Python 开发者对 pip 的慢早已习以为常。pip install 一个复杂项目,去泡杯咖啡回来可能还没完。UV 的出现改变了这个现状——它是用 Rust 重写的 Python 包管理器,安装速度比 pip 快 10 倍以上,而且完全兼容现有的 Python 生态。

UV 是什么

UV 由 Astral 团队开发(他们也是 Ruff 的创造者),核心目标很简单:让 Python 包管理变得像 Cargo 或 pnpm 一样快。它不是一个全新的包格式,而是兼容 pip 的 wheels 和 pyproject.toml,所以迁移成本几乎为零。

核心特性包括:

极速安装 — 用 Rust 实现解析和下载逻辑,全局磁盘缓存避免重复下载。大型项目的依赖安装从分钟级降到秒级。

锁定文件支持 — 生成 uv.lock 锁定文件,确保团队所有人的依赖版本完全一致。这是 pip 长期缺失的功能。

工作区支持 — 类似 Cargo workspace 或 pnpm workspace,可以在 monorepo 中管理多个 Python 包,共享虚拟环境。

Python 版本管理 — 内置 uv python 命令,可以安装、切换不同 Python 版本,不需要 pyenv。

安装 UV

code
# macOS / Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
 
# Windows
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"

安装后 uv 命令立即可用,不需要额外配置。

日常使用

创建项目

code
uv init myproject
cd myproject

这会生成标准的 pyproject.toml 和虚拟环境。

添加依赖

code
uv add requests flask

UV 会自动解析依赖树、下载包、更新 pyproject.tomluv.lock

运行脚本

code
uv run python main.py

UV 会自动激活虚拟环境并运行,不需要手动 source venv/bin/activate

锁定依赖

code
uv lock

生成 uv.lock 文件,提交到 Git 后团队成员运行 uv sync 即可获得完全一致的依赖环境。

从 pip 迁移

迁移非常简单。现有项目只需要:

code
# 在现有项目目录
uv pip install -r requirements.txt
uv lock

然后删除 requirements.txt,以后用 uv add 管理依赖即可。如果暂时不想改工作流,也可以直接用 uv pip 替代 pip

code
uv pip install requests  # 比 pip install requests 快 10 倍

为什么比 pip 快

UV 的速度来自几个设计决策:

并行下载和解析 — pip 是顺序执行的,UV 并行处理多个包的下载和依赖解析。

全局缓存 — 同一个包在不同项目中不需要重复下载,缓存位于 ~/.cache/uv

Rust 实现 — 解析依赖树和计算版本约束的算法用 Rust 实现,避免了 Python 的 GIL 限制。

更少的网络请求 — UV 会批量获取元数据,减少 PyPI API 调用次数。

适用场景

场景推荐方案
个人项目完全替代 pip
团队协作uv.lock 锁定依赖
Monorepo用 workspace 管理多包
CI/CDuv syncpip install 快得多
需要 pyenvuv python 替代

总结

UV 不是 pip 的增量改进,而是 Python 包管理的重新设计。它保留了 Python 生态的兼容性,同时带来了现代包管理器的速度和可靠性。对于每天和依赖打交道的 Python 开发者来说,UV 可能是 2026 年最值得升级的工具之一。

分享到
微博Twitter

© 2026 四月 · CC BY-NC-SA 4.0

原文链接:https://aprilzz.com/tutorials/uv-python-package-manager