uv 快速安装与性能对比:Python 依赖管理完全指南
【免费下载链接】uvAn extremely fast Python package and project manager, written in Rust.项目地址: https://gitcode.com/GitHub_Trending/uv/uv
你克隆同事的项目,第一次装依赖,pip 让你等了十分钟;换成 uv,同样的操作几秒钟结束。uv 是一个用 Rust 编写的 Python 依赖管理工具,核心价值就一句话:让依赖安装和解析变快,而且不用重新学一套概念。
🚀 一句话定位:Rust 重写的 Python 依赖管理工具
uv 干三件事:管理依赖(解析并生成锁文件)、管理环境(建虚拟环境、装包)、管理 Python 本身(安装和切换版本)。凭什么快?两个原因:核心解析器用 Rust 实现,可以并行完成解析和下载;第二,它有一个跨项目共享的全局缓存,包只存一份。官方基准测试的结论很直接:同类场景下,uv 比 pip快 10~100 倍。
⚡️ 三步完成安装验证
macOS 和 Linux 上一条命令装完:
curl -LsSf https://astral.sh/uv/install.sh | sh uv --version第二条就是验证命令:能打印出版本号,说明安装成功。Windows 用户可以直接pip install uv,详见 docs/getting-started/installation.md。之后可以用uv self update自行升级到最新版,不需要再跑一次安装脚本。
🧩 uv 核心优势:解析快、装得快、占得少
依赖解析:零缓存也是秒级
依赖解析通常是整个流程里最耗时的环节——工具要反复试探版本组合,确认哪些包能共存。官方基准里,冷启动(本机没有任何缓存)时 uv 的解析速度也领先 pip-compile、Poetry、PDM 等对比工具;有缓存时几乎是瞬时完成。一个 43 个包的需求清单,官方示例中解析只花了12ms。
冷启动解析对比:没有缓存时,uv 的依赖解析依然领先
热安装:重建环境近乎免费
所谓"热"场景,指包已经在缓存里,你只是想换一个干净的虚拟环境重新装一遍。此时 uv 在 Linux 上用硬链接、macOS 上用 reflink 建索引:安装动作本质上只是创建本地文件链接,不重新下载、不复制文件体。官方示例里 43 个包的完整安装在208ms内结束。
热安装对比:缓存命中时,重装整套依赖环境近乎瞬时
全局缓存:同一份依赖只占一份磁盘
这个机制像提前把食材备在灶台边:不管哪个项目后厨"开火",伸手就能用,不用每次重新采购。缓存是全局的,多个项目依赖同一个包时共享同一份文件,磁盘占用不会随项目数量线性膨胀。存储结构和清理方式可以看 docs/concepts/cache.md。
🛠️ 实战场景:三种最常用的打开方式
从零初始化新项目
uv init demo cd demo uv add requests uv syncuv init生成 pyproject.toml,uv add解析依赖并写入锁文件,uv sync让虚拟环境与锁文件对齐。三条命令,从零走到可运行的环境。
迁移旧项目的 requirements.txt
不用改造现有流程,pip 兼容接口可以原位替换:
uv pip compile requirements.in --universal -o requirements.txt uv pip sync requirements.txt前者对应 pip-compile,后者对应 pip-sync,命令形态基本不变,但速度通常快一个数量级。--universal会生成跨平台的锁文件,一台机器解析、多平台复用。
接入 CI 流水线
uv lock uv sync --locked--locked会在锁文件与 pyproject.toml 不一致时直接失败,避免 CI 静默装出和开发机不同的环境。再把 uv 的缓存目录加入 CI 缓存,冷安装就变成了热安装,构建时长进一步压缩。
CI 发布流程示例:用 Environments 给发布环节加一层人工门禁
📊 性能对比数据与进阶细节
| 场景 | 数据 |
|---|---|
| 解析 43 个包(有缓存) | 12ms |
| 安装 43 个包(有缓存) | 208ms |
| 安装 3 个 Python 版本 | 972ms |
| 总体安装速度(对比 pip) | 快 10~100 倍 |
冷启动安装对比:全新机器上,uv 的安装速度仍大幅领先
进阶细节:
- 多平台:支持 macOS、Linux、Windows
- 版本管理:
uv python install 3.12 3.13 3.14一次装多个版本,uv python pin为当前目录固定版本 - 工具运行:
uvx免安装直接跑某个工具,替代 pipx - 大型仓库:支持 Cargo 风格的 workspace,见 docs/concepts/projects/
- 基准测试的环境、口径和复现方式,见 BENCHMARKS.md 与 docs/reference/benchmarks.md
小结:什么时候值得切到 uv
只要团队里跑 Python 的项目超过一个,或单个项目的依赖树装一次要超过一分钟,uv 就值得试。新项目从uv init起步,老项目用uv pip原位替换,锁文件加缓存的组合能把 CI 里最拖时间的那一段压得很短。如果只想先验证一下,建议在装依赖最慢的那个项目里跑一次uv sync,自己对比前后耗时。
【免费下载链接】uvAn extremely fast Python package and project manager, written in Rust.项目地址: https://gitcode.com/GitHub_Trending/uv/uv
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考