uv pip install 有时比 pip install 慢,因默认不复用 wheel 缓存、不启用并行解析与 abi 跳过检查;需手动指定 --python-platform、uv_cache_dir 等优化项。

为什么 uv pip install 有时比 pip install 慢?
不是 uv 本身慢,而是默认行为没开加速开关。uv 默认不复用已下载的 wheel 缓存(尤其跨项目时),也不自动启用并行解析和二进制兼容性跳过检查——这些都得手动打开。
- 加
--no-deps或--no-build-isolation可能适得其反:uv 的强项在依赖图并行求解,砍掉依赖反而让它的优势无从发挥 - 首次运行建议加
--python-platform manylinux2014(或对应平台):避免 uv 对每个包反复探测本地 ABI 兼容性,这是隐藏耗时大户 - 确保
UV_CACHE_DIR指向一个高速本地路径(比如 SSD 上的目录),不要留在 NFS 或容器 tmpfs 里
uv sync 和 uv pip install -r requirements.txt 该选哪个?
用 uv sync。它专为 lockfile 场景设计,直接读 uv.lock 或兼容的 poetry.lock/pip-tools 输出,跳过所有依赖解析阶段,纯下载+安装,通常快 3–5 倍。
-
uv pip install -r仍会触发完整解析,哪怕文件内容完全静态 -
uv sync要求先有 lock 文件:没uv.lock就先跑uv pip compile requirements.in -o uv.lock - 如果项目用
pyproject.toml+ PEP 621(如 setuptools 64+),优先用uv sync --python 3.11,它能自动识别依赖段并跳过无关元数据处理
Windows 上 uv 安装失败报 error: failed to download wheel 怎么办?
大概率是 TLS 配置或代理穿透问题。uv 默认用 rustls,不走系统证书库,也不读 HTTP_PROXY 环境变量(除非显式传参)。
- 临时解决:加
--trusted-host pypi.org --trusted-host files.pythonhosted.org - 企业环境必须走代理时,改用
https_proxy=http://your-proxy:8080 uv pip install ...(注意是小写https_proxy,大写无效) - 某些杀毒软件会拦截 rustls 的 TLS 握手,可试
UV_HTTP_CLIENT=reqwest uv pip install ...切回 reqwest 引擎(稍慢但兼容性强)
用 uv venv 创建虚拟环境后,pip list 为空,但 python -m pip list 有包
因为 uv 创建的 venv 默认禁用 ensurepip,且不预装 pip 和 setuptools——这是故意为之,为提速和最小化镜像体积。
立即学习“Python免费学习笔记(深入)”;
- 要立刻用 pip:创建时加
--seed,即uv venv .venv --seed --python 3.12 - 不加
--seed也行,后续手动uv pip install pip,比python -m ensurepip快得多 - CI/CD 中若需纯净环境,反而推荐不
--seed:避免 pip 版本污染,统一由 uv 管控后续所有安装行为
真正卡住人的地方往往不在命令怎么写,而在 uv 把“默认不做事”做到了极致——它不会替你猜缓存位置、不会自动 fallback 到旧协议、也不会悄悄帮你补上缺失的 seed 包。所有省下的时间,都换成了需要明确声明的意图。










