大家好,欢迎来到 Crossin 的编程教室。
如果你经常写 Python,一定被这两个问题困扰过:
1. 慢: 每次 pip install 大包(比如 PyTorch 或 Pandas)时,进度条像蜗牛爬,只能起身去喝杯咖啡。
2. 乱: 为了管理不同项目的 Python 版本和依赖,电脑里装了 pyenv、venv、conda、poetry……工具多到打架,配置文件满天飞。
今天,我要安利一个近两年爆火的“六边形战士”-- uv。
01. uv 是什么?
简单来说,uv 是由 Astral 团队用 Rust 编写的 Python 包管理工具。
它之所以能让用惯了 pip 的开发者大呼“真香”,核心优势就在于:
1. 物理层面的“降维打击”:快且省
传统的 pip 安装包是“下载 -> 解压 -> 拷贝”。如果你有 10 个项目(虚拟环境)都用同一个 1GB 的库,你的硬盘就会被占掉 10GB。
而 uv 采用了硬链接(Hardlink)技术:
如果你之前装过某个包,再次安装时,uv 不再复制文件,而是建立一个指向全局缓存的“快捷方式”。安装时间从“分钟”直接降维到“毫秒”。
无论你有多少个项目,同一个版本的包在你的硬盘上只物理存在一份。
在缓存命中的情况下,安装 Trio 依赖的耗时对比
2. “一站式”的极致体验
以前我们要打理一个 Python 项目,需要一套组合拳:用 pyenv 装 Python,用 venv 建环境,用 pip 装插件。
现在,只要一个 uv 就全搞定了。它能帮你自动下载指定的 Python 解释器、自动创建环境、自动同步依赖。你甚至不需要手动执行 source venv/activate,一个 uv run 就能搞定一切。
02. 快速上手教程(建议收藏)
第一步:安装 uv
一行pip命令搞定:
当然如果你已经不想再用pip了,也可以直接下载:
curl -LsSf https://astral.sh/uv/install.sh | sh
第二步:初始化与运行
# 初始化项目uv init my-projectcd my-project# 瞬间添加依赖,并同步到配置文件uv add requests# 自动在隔离环境中运行,无需手动激活环境uv run main.py
黑科技:临时脚本
如果你只想写个单文件脚本,不想折腾环境,可以用 uv run 直接带上依赖:
uv run --with pandas analysis.py
uv 会自动处理依赖,跑完即焚,不占用你的全局环境,非常优雅。
03. 总结与迁移建议
面对这样一个新工具,很多同学可能会纠结:我现在的项目已经用了 Poetry 或者 Conda,要换吗?
Crossin 的建议:
如果你是初学者:强烈建议换!它能极大地减少你因为“环境没配对”或“依赖冲突”产生的挫败感。
如果你是资深开发者: 在 Docker 构建 或者 CI/CD 流程里,把 pip 换成 uv 之后,构建时间通常能缩短 50% 以上,那是真金白银的效率提升。
看看 uv 诞生以来的 Star 增长曲线:
这一飞冲天的势头说明,全球开发者正在集体倒戈转向 uv。
今日互动:
你会为了速度放弃 pip 吗?或者你觉得现有的工具已经够用了?欢迎在评论区分享你的看法。
如果本文对你有帮助,欢迎点赞、评论、转发。你们的支持是我更新的动力~
添加微信 crossin123 ,加入编程教室共同学习~