uv 是一个用 Rust 编写的、兼容 pip 协议的 Python 包安装器,启动快、解析快、下载快,支持并行下载和内置缓存,uv pip install 比 pip install 快 5–20 倍,可通过 uv pip install 或 uv sync 替代 pip install 和 pip install -r + pip freeze 组合。

uv 是什么,为什么能替代 pip install
uv 不是 pip 的插件或分支,而是一个从头编写的、兼容 pip 协议的 Python 包安装器和解析器,用 Rust 实现,启动快、解析快、下载快。它默认启用并行下载、二进制 wheel 优先、内置缓存策略,且完全兼容 requirements.txt 和 pyproject.toml。在多数项目中,uv pip install 比 pip install 快 5–20 倍,尤其在依赖多、网络慢或首次安装时差异明显。
如何用 uv 替代 pip install 安装依赖
不需要卸载 pip,也不需要修改现有配置 —— uv 提供了 uv pip install 子命令,语义与 pip 完全一致,所有常用参数(如 -r、--user、--index-url)都支持。实际使用只需把命令开头的 pip 换成 uv pip:
uv pip install -r requirements.txt uv pip install numpy pandas --upgrade uv pip install -e .
注意:uv pip 是兼容层,不是别名;它不读取 pip.conf,但会尊重 --index-url 和 --find-links 等传入参数。若你长期使用私有源,建议写成 alias 或封装脚本,避免每次重复输入。
用 uv sync 替代 pip install -r + pip freeze 组合
如果你习惯用 pip install -r requirements.txt + pip freeze > requirements.txt 来同步环境,uv sync 是更可靠的选择:它基于锁文件(uv.lock)精确还原依赖树,避免因网络抖动、索引顺序变化导致的版本漂移。
立即学习“Python免费学习笔记(深入)”;
-
uv sync默认读取pyproject.toml中的[project.dependencies],生成并维护uv.lock - 首次运行会创建
uv.lock;后续uv sync严格按 lock 文件安装,不重新解析 - 想更新依赖?用
uv pip compile pyproject.toml -o requirements.txt生成新约束,再uv sync - 不支持直接从
requirements.txt生成 lock —— 它的设计前提是声明式(pyproject.toml)优先
常见坑与注意事项
uv 并非万能替代,几个关键限制必须提前知道:
-
uv pip install不支持--editable安装某些复杂包(如含pyproject.toml+build-backend且未声明build-system.requires的项目),此时退回pip install -e - Windows 上若遇到
error: failed to spawn command,大概率是 PATH 中存在空格或中文路径,尝试用完整路径调用uv.exe -
uv pip list显示结果与pip list不完全一致(例如不显示pip自身),这是设计使然,不影响功能 - 它不替换
python -m pip行为,所以 CI 脚本里写死python -m pip的地方不会自动生效
最常被忽略的一点:uv 的缓存位置独立于 pip(默认在 ~/.cache/uv),首次运行会重建缓存,看起来“没变快”——多试两次,或先跑一次 uv pip install --dry-run requests 预热。


















