uv 能将 python 包安装提速至接近原生二进制级别,多数场景比 pip 快 5–15 倍,但“超 10 倍”仅限冷缓存、多依赖、纯 python 包为主的项目;须用 uv pip install 而非直接 uv,且需注意解释器路径、缓存隔离、windows 构建隔离等关键细节。

uv 确实能把 Python 包安装速度拉到接近原生二进制级别,多数场景下比 pip 快 5–15 倍,但“提升 10 倍以上”只在特定条件下成立——比如冷缓存、多依赖、纯 Python 包居多的项目。盲目替换 pip 不一定见效,关键看你怎么用。
用 uv pip install 替代 pip install,不是直接运行 uv
很多人装完 uv 就直接敲 uv mypackage,报错:error: unrecognized subcommand 'mypackage'。它不是 pip 的别名,而是提供兼容子命令。uv 默认不接管全局命令,必须显式调用子命令:
-
uv pip install requests—— 这才是正确入口,语义和行为基本对齐pip install -
uv pip compile requirements.in -o requirements.txt—— 替代pip-compile,更快且支持并发解析 - 不要用
uv install(该子命令不存在),也不要设alias pip=uv,那会破坏--find-links、--index-url等高级参数的兼容性
启用 --python 和 --system-site-packages 时务必确认 Python 解释器路径
uv 默认使用当前 shell 的 python,但它不读取 pyenv 或 conda 的激活状态,容易装错环境。常见错误现象:ModuleNotFoundError 明明刚装完,却 import 失败。
- 查清目标解释器路径:
which python或python -c "import sys; print(sys.executable)" - 显式指定:
uv pip install --python /path/to/venv/bin/python requests -
--system-site-packages在uv中需配合--python使用,单独加无效;且它不会自动继承用户 site-packages,这点和virtualenv --system-site-packages行为不同
缓存目录不共享,uv 和 pip 的 cache 是隔离的
你删了 ~/.cache/pip 想腾空间?没关系。uv 默认用 ~/.cache/uv,互不干扰。但这也意味着:第一次用 uv 安装某包,不会复用 pip 已下载的 wheel。
- 提速关键其实是并行下载 + 本地 wheel 构建跳过编译(如
numpy的预编译 wheel 直接解压) - 若你长期混用
pip和uv,建议统一工具链,否则缓存利用率低,起速优势打折扣 - 可通过
UV_CACHE_DIR环境变量自定义位置,但不要指向pip的 cache 目录——格式不兼容,uv会忽略
Windows 上启用 --no-build-isolation 可能触发 pyproject.toml 解析失败
某些包(如旧版 setuptools、含自定义 build-system.requires 的项目)在 Windows 下用 uv pip install 会卡在元数据解析阶段,错误信息类似:failed to parse pyproject.toml: TOML parse error at line X, column Y。
- 这不是
uvbug,而是其默认启用严格隔离构建,而部分 Windows 环境缺少pywin32或msvc-runtime导致前置依赖加载失败 - 临时绕过:
uv pip install --no-build-isolation package_name - 更稳妥做法:先用
pip install --upgrade build setuptools wheel更新构建工具链,再切回uv
uv 的快,本质是用 Rust 重写了下载、解析、wheel 安装三步,并跳过大量 Python 层校验。但它不解决源码编译慢的问题——如果一个包没提供 wheel,uv 和 pip 都得调 pip wheel 编译,此时速度差异微乎其微。真正要提速,得盯住 manylinux wheel 是否可用、是否启用了 --only-binary :all:。Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!











