最近一段时间,uv 在 Python 社区里非常火:
快、现代、Rust 实现、替代 pip / poetry / pip-tools ……
看起来像是“Python 包管理的未来”。
但在实际工程实践中,我遇到了一些并不理想的体验。
这篇文章不打算唱反调,也不打算神话 uv,而是基于真实使用场景,讨论:uv 适合什么、不适合什么,以及如何理性使用。
一、背景:我遇到了什么问题?
在项目中,我尝试使用 uv pip install 直接安装依赖,但失败率明显偏高:
-
同一份
requirements.txt -
使用
uv pip install:- 经常失败
- 报 retry exhausted / download failed
-
改成:
uv pip install pip pip install -r requirements.txt👉 几乎可以稳定成功
而且 pip 还支持我熟悉的参数:
pip install -r requirements.txt --retries 10 --timeout 120
这并不是偶发现象,而是可以稳定复现的行为差异。
二、问题并不神秘:并发 + 网络现实
后来复盘发现,问题并不在“uv 不好”,而在 设计取向与现实环境的错位。
uv pip 的核心设计假设
-
高并发下载
-
全局依赖一次性解析
-
假设:
- PyPI / 镜像稳定
- 网络质量好
- 服务端能承受并发请求
在以下环境中,这些假设基本成立:
- 官方 PyPI
- 云厂商 CI(GitHub Actions、GitLab CI)
- 海外网络
但现实往往是:
- 公司内部 PyPI / Nexus / Artifactory
- 国内网络 + 私有镜像
- 有限连接数 / rate limit
- TLS / 代理 / 防火墙
在这种环境下:
uv 的并发下载
→ 服务端扛不住
→ 连接被 reset / timeout
→ uv 判定为不可恢复失败
→ 安装整体失败
三、为什么 pip 反而更“稳”?
pip 经常被吐槽“慢”“老”,但它在网络不稳定环境下,有一些被低估的工程优势:
-
默认并发度低(甚至接近串行)
-
retry 策略非常保守
-
支持显式参数控制:
--retries--timeout
-
对失败更“有耐心”
结果就是:
pip 慢,但能等
uv 快,但更容易放弃
在企业内网 / 私服环境下,pip 的这种“啰嗦”反而成了优势。
四、uv 并不是 pip 的参数级替代品
一个很容易踩的误区是:
“uv pip 就是更快的 pip”
事实上并不完全成立。
-
uv pip 在语义上兼容 pip
-
但在网络控制能力上,并不等价于:
pip install --retries N --timeout T
目前 uv 的 retry / timeout / 并发控制:
- 粒度较粗
- 更偏向“失败即失败”
- 更适合稳定基础设施环境
这不是 bug,而是取舍不同。
五、我最终采用的实践方案
✅ 混合模式:uv + pip(推荐)
# 1. 用 uv 管理 Python / venv(快)
uv venv
source .venv/bin/activate
# 2. 用 uv 安装 pip(快)
uv pip install pip
# 3. 用 pip 安装业务依赖(稳)
pip install -r requirements.txt --retries 10 --timeout 120
这个组合的特点是:
-
uv 负责:
- Python 版本
- venv
- bootstrap
-
pip 负责:
- 网络敏感
- 私服友好
- 可调试的安装阶段
另一种思路:uv 只负责 lock
uv pip compile requirements.in -o requirements.txt
pip install -r requirements.txt
-
uv 提供:
- 快速解析
- 确定性依赖
-
pip 提供:
- 稳定安装
六、什么时候适合“全量 uv”,什么时候不适合?
适合全量 uv 的场景
- 官方 PyPI
- 海外网络
- 云 CI
- 对速度极度敏感
- 基础设施可控
不要勉强全量 uv 的场景
- 企业内网
- 私服质量参差不齐
- 网络波动明显
- 安装失败成本高(CI / 生产)
在这些场景下,“混合使用”不是妥协,而是工程理性。
七、结语:不要把工具当信仰
uv 是一个非常优秀的工具,它代表了 Python 工具链向现代化迈进的方向。
但:
- 快 ≠ 永远更好
- 新 ≠ 适合所有环境
- 工程实践 ≠ benchmark
真正成熟的使用方式,往往是:
理解工具的设计前提
在不满足前提时,主动调整使用方式
对我来说,uv + pip 的组合,已经是一个足够现代、也足够现实的答案。