一台新电脑,装Python要多久?
老流程你还记得:装pyenv,配shell配置文件,装virtualenv,pip install一遍,报错缺编译工具,再补gcc。整个过程20分钟起步,还经常卡在某个C扩展上。
Astral团队开发的uv把这套流程压缩到一条命令。这个用Rust写的包管理工具,2024年2月首次发布,如今GitHub星标已经超过6万,成为Python生态近年增长最快的开发工具。
快在哪?实测数据说话
uv的杀手锏是速度。官方基准测试显示,预热缓存后安装Trio的依赖树,uv比pip快一个数量级,冷缓存场景下也快10倍以上。
速度来自三个设计决策:
- 全局缓存。同一个包只下载一次,所有项目共享,装第二遍几乎零耗时。
- 并行下载。Rust的异步运行时把网络请求吃满,pip还在排队的时候uv已经装完了。
- 用Rust重写解析器。依赖解析这个pip的传统瓶颈,被uv做成了毫秒级操作。
一份社区实测记录显示,一个带200多个依赖的数据科学项目,pip install耗时4分12秒,uv只要11秒。
一个工具管到底
uv的野心不止于快。它把散落各处的工具收进一把伞里:
- uv python install 3.14:替代pyenv,自动下载托管Python解释器,不用编译源码。
- uv init、uv add、uv sync:替代poetry,pyproject.toml加uv.lock锁文件,团队环境完全一致。
- uv run pytest:替代pipx,临时工具一条命令跑起来,不留垃圾。
- uv tool install ruff:全局CLI工具管理,同样秒级。
Simon Willison在博客里分享过一个实用技巧:用uv给同一个项目跑多个Python版本的测试,三条命令搞定3.12、3.13、3.14的兼容性验证,CI上省下的时间非常可观。
迁移成本有多低
从现有项目迁移,通常只需要三步:
- 在项目根目录执行uv init,补齐pyproject.toml。
- 用uv add把requirements.txt里的依赖加回来,或直接用uv pip install -r过渡。
- 提交生成的uv.lock,团队其他人uv sync一下就能对齐环境。
uv还兼容pip接口。uv pip install这个子命令就是给老项目准备的,行为和pip一致,速度却快得多。这意味着你不用一次性换掉所有工作流,先提速,再逐步迁移。
生态已经用脚投票
主流项目跟进得很快。pytest官方文档现在给了uv的工作流示例,GitHub Actions里astral-sh/setup-uv这个action被大量项目采用。FastAPI作者Tiangeo的教程、各大高校的Python课程,都开始默认推荐uv。
背后的Astral公司打法也值得一看:Ruff静态检查工具免费开源,uv同样免费开源,公司靠商业化服务养活开发团队。开发者拿到的体验是,pip、pyenv、virtualenv、poetry、pipx五个工具的活,一个uv全包,还快10倍。
上手建议
新项目直接uv init起步,老项目从uv pip子命令切入。本地装好后,把uv sync写进CI脚本,构建时间一般能砍掉一大半。
Python生态的工具碎片化问题吵了十几年,uv用一个30秒的安装体验给出了自己的答案。你的下一个项目,值得一试。
苏公网安备32010502011527号
发表回复