uv介绍

半兽人 发表于: 2025-04-14   最后更新时间: 2025-04-14 16:32:57  
{{totalSubscript}} 订阅, 26 游览

1. 什么是 uv?

uv 是一个由 Astral 开发的 高性能 Python 包管理和项目管理工具,用 Rust 编写,旨在取代传统的 Python 工具(如 pipvirtualenvpoetry、甚至部分 pyenv 功能)。它以极快的速度和现代化的设计著称,号称比 pip 快 10-100 倍,比 Poetry 快 2-10 倍。uv 的目标是提供一个统一的、一站式的 Python 开发体验,涵盖包安装、虚拟环境管理、项目管理和 Python 版本管理。

核心特点:

  • 速度极快:Rust 实现,依赖解析和安装速度远超 Python 工具。
  • 多功能:集成了 pip(通过 uv pip)、venvpoetrypyenv 的功能。
  • 标准兼容:支持 PEP 621(pyproject.toml 项目元数据)和 PEP 582(本地 Python 版本管理)。
  • 跨平台:支持 macOS、Linux、Windows。
  • 简单集成:与现有工具(如 pyenv、Poetry 项目)兼容,易于迁移。

uv 的主要子命令:

  • uv pip:快速替代 pip,用于安装、卸载包,兼容 requirements.txt
  • uv venv:创建虚拟环境,速度比 python -m venv 快 80 倍。
  • uv add / uv remove:管理项目依赖,更新 pyproject.toml
  • uv sync:同步依赖到虚拟环境,类似 poetry install
  • uv run:运行脚本,自动激活虚拟环境。
  • uv python:管理 Python 版本(下载、安装、切换)。
  • uv lock:生成 uv.lock,锁定依赖版本。
  • uv build / uv publish:构建和发布 Python 包。

2. uv 的功能分解

uv 的设计目标是“一个工具解决所有问题”,以下是它的主要功能:

  1. 包管理

    • 类似 pip,但更快、更智能。
    • 示例:
      uv pip install requests
      
      安装 requests,速度比 pip install requests 快数倍。
    • 支持 requirements.txt 和直接依赖:
      uv pip install -r requirements.txt
      
  2. 虚拟环境管理

    • 自动创建虚拟环境,默认存储在项目目录的 .venv
    • 示例:
      uv venv
      source .venv/bin/activate
      
    • uv sync 自动创建并同步依赖:
      uv sync
      
  3. 项目管理

    • 初始化项目、添加依赖、生成锁文件。
    • 使用标准的 pyproject.toml(兼容 PEP 621):
      [project]
      name = "my-project"
      version = "0.1.0"
      dependencies = ["requests>=2.28.0"]
      
    • 示例:
      uv init my-project
      cd my-project
      uv add requests
      uv lock
      
  4. Python 版本管理

    • 内置 Python 解释器管理,无需 pyenv。
    • 通过 .python-version 文件指定版本:
      echo "3.12" > .python-version
      uv python install 3.12
      
    • uv 会自动下载所需版本(类似 pyenv 的 pyenv install 3.12.0)。
  5. 锁文件

    • 生成 uv.lock,确保跨平台依赖一致性。
    • 比 Poetry 的 poetry.lock 更轻量,解析更快。
  6. 构建与发布

    • 支持打包(uv build)和发布(uv publish),类似 Poetry 的 poetry publish
    • 示例:
      uv build
      uv publish
      

3. uv 的安装和使用(macOS)

假设你在 macOS 上(结合你之前的 pyenv 和 Poetry 讨论),以下是安装 uv 的步骤:

  1. 安装 uv

    • 通过 Homebrew(推荐):
      brew install uv
      
    • 或通过 pip(较慢):
      pip install uv
      
    • 验证:
      uv --version
      
  2. 初始化项目

    uv init my-project
    cd my-project
    
  3. 设置 Python 版本

    uv python install 3.12
    echo "3.12" > .python-version
    
  4. 添加依赖

    uv add requests
    uv sync  # 创建 .venv,安装依赖
    
  5. 运行脚本

    uv run main.py
    

4. uv 的优势和局限

优势

  • 速度:比 Poetry 快 2-10 倍,比 pip 快 10-100 倍。
  • 一站式:无需 pyenv、pip、virtualenv,所有功能内置。
  • 标准兼容pyproject.toml 遵循 PEP 621,易于迁移。
  • 灵活性:支持 uv pip 兼容旧工作流,uv python 管理版本。

局限

  • 新工具:生态不如 Poetry 成熟,社区支持较小(截至 2025 年 4 月)。
  • CLI 复杂:命令多(uv adduv pipuv run),学习曲线稍陡。
  • 依赖组:支持较弱(仅 --dev 等),不如 Poetry 的多组(如 devtest)。
  • 文档:Poetry 文档更详尽,uv 文档仍在完善。

总结

  • uv 是什么

    • 高性能 Python 工具,集包管理(uv pip)、虚拟环境(uv venv)、项目管理(uv add)、Python 版本管理(uv python)于一体。
    • 用 Rust 编写,速度远超 Poetry 和 pip。
  • 与 Poetry 的关系

    • uv 功能更广(包括 Python 版本管理),配置更简洁(无 poetry.toml)。
    • Poetry CLI 简单,适合复杂项目。
更新于 2025-04-14
在线,2小时前登录

查看uv更多相关的文章或提一个关于uv的问题,也可以与我们一起分享文章