Python依赖管理工具,如何实现高效的环境管理?

摘要:0 序 学习一款新的Python依赖包管理与环境管理工具: UV。 "最近几个月,我注意到一个现象:看到的新开源项目里,越来越多开始在README里写uv pip install而不是pip install。&am
0 序 学习一款新的Python依赖包管理与环境管理工具: UV。 "最近几个月,我注意到一个现象:看到的新开源项目里,越来越多开始在README里写uv pip install而不是pip install。" 2025年,Python包管理工具已经由pip变成了uv? - Weixin/机器学习实验室 2025.11.13 全文主要摘自此篇。 比如最近与Kimi K2 Thinking一起发布的Kimi CLI就是通过uv命令安装的: uv tool install --python 3.13 kimi-cli 在 Python 开发中,包管理和环境隔离是每个开发者都会遇到的问题。 无论是 pip 的缓慢、virtualenv 的繁琐,还是 conda 的臃肿,都让开发者们期待一个更高效的解决方案。 1 概述: UV := Universal Virtual := Python 包与环境管理工具 uv是什么? uv (Universal Virtual) 是 Astral 公司开发了一款新的Python包管理工具。 提到Astral,你可能会想起他们去年发布的Ruff。 那个用Rust写的Python linter,速度快到离谱,现在已经是很多项目的标配。 uv目前在Github斩获73k的star。 https://github.com/astral-sh/uv Slogan : An extremely fast Python package and project manager, written in Rust. 一款用Rust编写的、非常快的Python包和项目管理器。 2024 年 2 月首次发布,当时的定位是更快的pip。几个月后,功能大幅扩展,变成了一个统一的Python工具链。 现在的uv,官方说可以替代pip、pip-tools、pipx、poetry、pyenv、virtualenv这一堆工具。 性能实测:快得离谱 先说性能,这是uv最吸引人的地方。 官方说uv比pip快10-100倍。一开始有大佬觉得这数字有点夸张,但看了一些真实案例后,确实差不多。 典型案例: 2024年4月,Streamlit把所有用户的包管理从pip切换到了uv。 结果是什么? 平均依赖安装时间从60秒降到了20秒,应用部署时间直接提升了55%。 这不是实验室数据,是真实的生产环境,每天数万个应用在跑。 包安装速度对比(无缓存): 安装pandas:1.22s (uv) vs 2.62s (pip) - 快 53% 安装numpy + scipy + torch:3.5s (uv) vs 14.8s (pip) - 快 4.2 倍 解析50+ 包的requirements.txt:5.1s (uv) vs 28.4s (pip) - 快 5.6 倍 有缓存的情况下: Jupyter Notebook项目解析:0.57s(冷启动)→ 0.02s(温缓存) 这个速度提升就是几十倍到上百倍了 虚拟环境创建: uv创建虚拟环境比python -m venv快80倍 比virtualenv快7倍 除了速度快,【资源占用】也更少: CPU 使用:68% (uv) vs 92% (pip) 内存占用:210MB (uv) vs 450MB (pip) 这意味着,在CI/CD环境或者【资源受限】的机器上,uv的优势会更明显。 为什么性能这么快? 看到这些数据,你可能会好奇:uv凭啥这么快? 首先,编程语言。 pip是用Python写的,uv用的是Rust。Rust是系统级编程语言,性能接近 C/C++。 这是基础性能差异。 其次,uv充分利用了Rust的并发特性。 传统的pip在下载和安装包时,大部分操作是串行的; 而uv可以同时处理多个依赖的下载、构建和安装。 在依赖树比较复杂的项目里,这种【并发处理】带来的提升非常明显。 此外,uv还有一个【全局模块缓存系统】。 当你第一次安装一个包后,uv会把它缓存起来。 下次再安装同样的包(可能是在不同的项目里),uv直接从缓存读取,甚至不需要重新下载。 而且在支持的文件系统上,uv使用【写时复制】(Copy-on-Write)和【硬链接】技术。 这意味着,同一个包在多个【虚拟环境】中共享,不会占用多倍的【磁盘空间】。 最后是,依赖解析算法。 依赖解析是【包管理】中最复杂的部分。
阅读全文