UV:现代 Python 环境管理工具使用指南
1. 什么是 UV?
UV 是一个用 Rust 语言开发的全新 Python 包和环境管理工具。它速度非常快,兼容 pip 和 venv 的用法,还能帮你更好地管理依赖和虚拟环境。无论是开发新项目,还是维护老项目,UV 都能让你的 Python 开发体验更轻松高效。
2. UV 有哪些优缺点?
优点
- 速度超快:安装依赖、创建环境的速度远超 pip 和 venv,尤其在大项目或 CI 场景下优势明显。
- 无需预装 Python:UV 是独立的二进制工具,哪怕系统没装 Python 也能用,非常适合自动化和容器环境。
- 兼容性好:大部分 pip/venv 的命令都能直接用 UV 替换,迁移成本很低。
- 依赖解析更智能:UV 能更快、更准确地解决依赖冲突,减少“依赖地狱”。
- 跨平台:支持 Windows、macOS 和 Linux。
- 一站式体验:包管理、环境管理、依赖锁定等功能全都集成在一起。
- 高效缓存:装过的包会缓存起来,重复安装几乎是秒装。
缺点
- 生态和文档还在完善:相比 pip,UV 的教程和社区资源还不够多,遇到问题时可能不太好查资料。
- 部分高级用法支持有限:某些 pip 的高级参数或特殊用法,UV 还没完全覆盖。
- 需要单独安装:目前 Python 官方还没自带 UV,需要自己手动安装。
- 新项目,稳定性待观察:UV 还比较新,长期维护和兼容性还需要时间验证。
3. 大家怎么评价 UV?
- 很多用户都被 UV 的速度惊艳到,觉得开发和自动化流程都变得更高效了。
- 一体化的工具让人省心,不用再 pip、venv、pip-tools 一起用。
- 兼容性好,老项目切换过来也很顺利。
- 也有用户觉得文档和社区还不够完善,遇到问题时不如 pip 好找答案。
- 还有人担心 UV 作为新项目,稳定性和长期维护还需要再观望。
一些真实评论:
- “UV 让 Python 包管理终于有了现代工具的体验。”
- “速度快得离谱,CI/CD 省了不少时间。”
- “希望文档再完善一些,遇到问题有时找不到答案。”
4. UV 怎么安装和用?
4.1 安装 UV
- 推荐用 pip 安装:
pip install uv
- macOS/Linux 也可以用 Homebrew:
brew install uv
- 也可以去 UV Releases 下载官方二进制文件。
4.2 创建和激活虚拟环境
uv venv .venv
激活环境:
- Windows:
.venv\Scripts\activate
- macOS/Linux:
source .venv/bin/activate
4.3 安装依赖
uv pip install requests
uv pip install -r requirements.txt
4.4 冻结依赖
uv pip freeze > requirements.txt
4.5 升级或卸载包
uv pip install --upgrade 包名
uv pip uninstall 包名
5. UV 还有哪些实用功能?
5.1 依赖锁定和同步
生成锁文件,保证依赖一致性:
uv pip compile requirements.in
uv pip sync
5.2 离线安装和缓存
利用缓存离线安装包:
uv pip install --offline 包名
5.3 管理 Python 解释器
自动下载和切换不同版本的 Python:
uv python install 3.11
uv python use 3.11
5.4 直接运行脚本
自动处理依赖并运行脚本:
uv run script.py
5.5 依赖树可视化
查看包的依赖关系树:
uv pip show --tree 包名
5.6 项目构建
支持 PEP 517/518 构建项目:
uv build
5.7 使用国内镜像源
加速国内访问:
uv pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 包名
5.8 依赖安全检查
检查依赖包的安全性:
uv pip audit
6. 用 UV 安装常见深度学习包
6.1 PyTorch(指定 CUDA 12.1,2.1.0 版本)
uv pip install torch==2.1.0 torchvision==0.16.0 torchaudio==2.1.0 --index-url https://download.pytorch.org/whl/cu121
说明:
--index-url
用于指定 PyTorch 官方 CUDA 12.1 的 wheel 源。- 如果你用的是 CPU 或其他 CUDA 版本,请到 PyTorch 官网 选择合适的命令。
6.2 TensorFlow(2.13.0 版本)
uv pip install tensorflow==2.13.0
6.3 Transformers(4.36.2 版本)
uv pip install transformers==4.36.2
6.4 scikit-learn(1.3.2 版本)
uv pip install scikit-learn==1.3.2
6.5 其他常用包(指定常用稳定版本)
uv pip install numpy==1.24.4 pandas==1.5.3 matplotlib==3.7.1 seaborn==0.12.2 jupyter==1.0.0
6.6 requirements.txt 示例
你也可以把这些写进 requirements.txt
,内容如下:
torch==2.1.0
torchvision==0.16.0
torchaudio==2.1.0
tensorflow==2.13.0
transformers==4.36.2
scikit-learn==1.3.2
numpy==1.24.4
pandas==1.5.3
matplotlib==3.7.1
seaborn==0.12.2
jupyter==1.0.0
然后用 UV 一键安装:
uv pip install -r requirements.txt --index-url https://download.pytorch.org/whl/cu121
注意:
- 如果 requirements.txt 里有 PyTorch 系列包,建议加上
--index-url
,否则可能会装到 CPU 版本。- 其他包会自动从 PyPI 下载。
7. UV 使用中的特殊情况与应对方法
7.1 依赖冲突或安装失败
现象:安装依赖时报错,提示依赖冲突或无法解析依赖树。
应对方法:
- 检查 requirements.txt 或 pyproject.toml 是否有版本冲突。
- 使用
uv pip compile
重新生成锁文件,UV 的依赖解析能力较强,通常能自动解决大部分冲突。 - 如果依赖确实无法兼容,考虑升级/降级相关包版本。
7.2 某些 pip 高级参数不支持
现象:用 UV 执行 pip 的某些高级参数(如 --user、–editable、某些构建参数)时提示不支持。
应对方法:
- 查看 UV 官方文档 或
uv pip --help
,确认参数支持情况。 - 对于暂不支持的参数,建议临时切换回 pip 使用。
7.3 需要使用本地或私有源
现象:公司或团队有自己的 PyPI 镜像或私有包源。
应对方法:
- UV 支持自定义源,和 pip 用法一致:
uv pip install -i https://your.private.repo/simple 包名
- 也可以通过
--extra-index-url
添加多个源。
7.4 离线环境部署
现象:目标环境无法联网,需要离线安装依赖。
应对方法:
- 先在有网环境用 UV 安装依赖,UV 会自动缓存 wheel 文件。
- 拷贝
.uv
缓存目录到目标环境,再用uv pip install --offline
安装。
7.5 需要指定 Python 版本
现象:项目要求用特定 Python 版本,但本地未安装。
应对方法:
- 用 UV 自动下载并切换 Python 版本:
uv python install 3.11 uv python use 3.11
- 也可以在创建虚拟环境时指定 Python 路径:
uv venv .venv --python=python3.11
7.6 与老项目或特殊工具兼容性问题
现象:老项目依赖某些 pip/venv 的特殊行为或第三方工具,UV 可能暂不兼容。
应对方法:
- 先在测试环境用 UV 试运行,确认兼容性。
- 遇到不兼容时,临时回退到 pip/venv,或向 UV 社区反馈问题。
7.7 CI/CD 环境下的使用
现象:在 CI/CD 流水线中需要加速依赖安装。
应对方法:
- 直接用 UV 替换 pip/venv,能大幅提升安装速度。
- 利用 UV 的缓存机制,缓存
.uv
目录,加速后续构建。
7.8 依赖安全或合规性检查
现象:需要检查依赖包的安全漏洞或许可证合规。
应对方法:
- UV 支持依赖安全检查:
uv pip audit
- 许可证合规可结合第三方工具或手动检查。
7.9 需要与 Poetry、pip-tools 等工具协作
现象:团队部分成员用 Poetry、pip-tools,部分用 UV。
应对方法:
- UV 支持读取和生成 requirements.txt、pyproject.toml,基本能与主流工具协作。
- 建议团队统一依赖管理工具,减少协作成本。
7.10 其他问题
- UV 本身报错或崩溃:建议升级到最新版,或到 UV Issues 反馈。