Python包管理器 uv 使用详解

uv 是一个新兴的高性能Python包管理器,由Astral团队开发(与Rust的Rust工具链类似)。它旨在替代pippip-tools,提供更快的依赖解析和安装速度。

安装 uv

curl -LsSf https://astral.sh/uv/install.sh | sh

或者使用pip(虽然不推荐,因为uv旨在替代pip):

pip install uv

安装后,你可能需要将uv添加到PATH环境变量中。

基本用法

1. 创建虚拟环境

uv venv  # 在当前目录创建虚拟环境
uv venv .venv  # 在指定目录创建虚拟环境

2. 激活虚拟环境

  • Linux/macOS:
    source .venv/bin/activate
    
  • Windows:
    .venv\Scripts\activate
    

3. 安装包

uv pip install package_name  # 安装单个包
uv pip install -r requirements.txt  # 从文件安装

4. 生成requirements.txt

uv pip freeze > requirements.txt

高级功能

1. 快速依赖解析

uv pip compile requirements.in -o requirements.txt

这比传统的pip-compile更快,特别是在大型项目中。

2. 并行安装

uv 默认使用并行安装来加速过程:

uv pip install -r requirements.txt

3. 锁定文件支持

生成详细的锁定文件:

uv pip compile --generate-hashes requirements.in -o requirements.txt

4. 与现有工具集成

uv 可以与pippip-tools工作流兼容:

# 使用uv加速现有的pip工作流
uv pip install -r requirements.txt

性能对比

uv 的主要优势在于速度:

  1. 依赖解析速度比pip快10-100倍
  2. 安装速度比pip快,特别是在大型依赖图中
  3. 内存效率更高

配置选项

uv 支持多种配置选项:

uv pip install --no-cache-dir package_name  # 禁用缓存
uv pip install --quiet package_name  # 安静模式
uv pip install --verbose package_name  # 详细输出

常见问题

1. 如何从pip迁移到uv?

只需将pip命令替换为uv pip即可,大多数情况下无需其他更改。

2. uv是否支持所有pip功能?

目前uv支持大多数常用pip功能,但一些边缘功能可能尚未实现。

3. 如何更新uv本身?

uv pip install --upgrade uv

总结

uv 是一个有前途的Python包管理工具,特别适合:

  • 大型项目依赖管理
  • 需要快速依赖解析的场景
  • 希望替代现有pip工作流的开发者