抛弃 Pip?Rust 编写的 UV 可能是 Python 开发的终极答案
作为一名 Python 开发者,你肯定经历过这种绝望:当你接手一个新项目,敲下 poetry install 或者 pip install 后,甚至有时间去楼下买杯咖啡,回来发现依赖解析还在转圈圈。
苦恼于 pip 的慢、poetry 的依赖解析卡顿以及 venv 管理的繁琐,Python 社区终于迎来了一个真正的「破局者」------ UV。
简单说,这玩意儿就是 Python 包管理界的 F1 赛车。
UV 是什么来头?
如果你用过 Ruff(那个快到离谱的 Python 代码 linter),那你对 Astral 这个团队一定不陌生。没错,UV 就是这帮人搞出来的。
他们再次祭出了大杀器------Rust。UV 底层完全由 Rust 编写,利用了 Rust 极致的性能和并行处理能力。官方数据显示,它的安装速度比 pip 快几十倍,依赖解析速度比 poetry 快上百倍。
这不是夸张,是真的「眨眼补帧」级别的快。
为什么要换用 UV?它能干嘛?
现在的 Python 工具链其实挺碎片的:装包用 pip,管环境用 venv 或 conda,管依赖和打包用 poetry 或 flit。
UV 的野心是:我全都要。 它定位为一站式的 Python 项目构建与包管理工具。
1. 速度,还是 Tmd 速度
这是 UV 最大的卖点。它自带高效缓存和并行下载。如果你试过用 UV 安装像 PyTorch 这种庞然大物,你会发现进度条跑得跟飞一样。它不仅兼容 requirements.txt,而且不需要你改任何代码,直接无缝替换 pip。
2. 一个工具,搞定所有
以前我们需要组合拳,现在 UV 自己就能打全场:
- 替代 Pip:极速装包。
- 替代 Venv/Conda:它内置了虚拟环境管理,毫秒级创建环境。
- 替代 Poetry/Pipenv :它支持
pyproject.toml,能生成uv.lock(锁文件生成速度极快),彻底告别依赖地狱。 - 替代 Setuptools:支持构建 wheel 和 sdist 源码包,发布项目也归它管。
3. 无痛迁移
最让我惊喜的是它的兼容性。它完全尊重现有的标准(PEP 621),兼容你现在的 pip.conf 配置,甚至连国内的清华源、阿里源都能直接识别,不需要重新配置一堆东西。
快速上手指南
别被「新工具」吓到,UV 的上手成本极低。
第一步:安装 UV
比较黑色幽默的是,目前最方便安装 UV 的方式还是用 pip:
bash
pip install uv --user
第二步:体验飞一般的装包(替代 Pip)
命令几乎一模一样,只需要加个 uv 前缀:
bash
# 单个包安装
uv install requests
# 从 requirements.txt 安装(感受一下这个解析速度)
uv pip install -r requirements.txt
第三步:现代化的项目管理(替代 Poetry)
如果你想体验完整的项目流:
bash
# 1. 初始化项目
uv init my_new_project
# 2. 创建虚拟环境(自动生成 .venv,不需要再敲 python -m venv 了)
uv venv
# 3. 激活环境
# Windows:
.venv\Scripts\activate
# Mac/Linux:
source .venv/bin/activate
# 4. 构建发布
uv build
写在最后
UV 目前虽然还在快速迭代中,但已经非常稳定,完全可以用于生产环境。对于受够了 Python 传统工具链「慢」和「碎」的开发者来说,UV 绝对值得你花 5 分钟去尝试一下。
既然能开法拉利,为什么还要推独轮车呢?