Python 生态系统中的包管理工具种类繁多,从经典的 pip 到强大的 conda,再到新兴的 pixi,开发者总在寻找更高效、更可靠的解决方案。近年来,一款名为 uv 的工具异军突起,凭借其惊人的速度和现代化设计,正逐渐成为 Python 包安装和依赖解析领域的新宠。我们强烈建议您从 2025 年开始,将 uv 作为您 Python 项目的首选工具。


为什么选择 uv?速度是硬道理!

uv 是一款专门针对 Python 的工具,其核心目标是实现超快的依赖解析和包安装。在性能方面,uv 展现出压倒性优势:

  • pip install <pkg>conda install <pkg> 快 2-10 倍

  • uv pip install <pkg>pip install <pkg> 快 5-10 倍

  • 原生的 uv 命令(如 uv add)比 uv pip 接口更快(快 2-5 倍),因为它开销更少,且无需处理 PyPy 包依赖管理的遗留支持。

这种速度提升并非无足轻重。在日常开发、CI/CD 流水线或大型项目依赖安装中,时间的节省能显著提升开发效率。

之所以建议从 2025 年开始广泛使用 uv,是因为uv 将在 Python 社区中获得更广泛的采纳,其功能会更加稳定和完善。随着用户基数的扩大,相关的文档、社区支持和集成方案也将更加成熟,使其在生产环境中的应用更加稳健可靠。


uv 与其他工具的对比选择

在 Python 包管理领域,了解 pipcondapixi 等工具的特点,能帮助您做出最佳选择。

特性/工具

uv

pip

conda

pixi

主要功能

Python 包安装与依赖解析(专注于速度)

Python 包安装

跨平台、多语言包与环境管理

现代、多语言包与环境管理

速度

极快uv pip install 快数倍,uv add 更快

较慢

最慢(依赖解析和安装)

较快:底层使用 uv add

语言支持

仅限 Python

仅限 Python

多语言(Python, R, Julia 等)

多语言(类似于 conda

依赖解析

高效

相对较慢

全面(处理非 Python 依赖)

全面(处理多语言依赖)

环境管理

虚拟环境(uv venv

虚拟环境(python -m venv

Conda 环境

pixi 环境(声明式)

适用场景

追求极致速度的 Python 项目;替代 pip 和部分 conda 功能

传统的 Python 包安装

复杂环境,需管理非 Python 依赖或多语言项目

追求现代、声明式、多语言环境管理

Windows 推荐

普遍适用,但若 pyproject.toml 出现问题,可考虑 pixi

普遍适用

普遍适用

推荐:当 uv 遇到 pyproject.toml 依赖问题时

底层实现

Rust 编写,高性能

Python 编写

C++ 编写,通过二进制包管理

Rust 编写,底层使用 uv add


Python 版本推荐

为了获得最佳兼容性和性能,建议您安装 Python 3.10 或更高版本。考虑到 PyTorch 等库的兼容性,推荐安装比最新发布版本至少旧 1-3 个版本的 Python。例如,如果最新是 Python 3.13,那么 3.10、3.11 或 3.12 是更稳妥的选择。您可以通过 python --versionpython3 --version 命令检查当前 Python 版本。


本地环境设置与包管理实践

在本地机器上,uv 提供了一套高效的 Python 环境和包管理流程:

1. 准备工作:安装 Python

强烈建议手动安装 Python,以避免与操作系统内置 Python 冲突。您可以从 python.org 下载适合您操作系统的安装器。

2. 第一步:安装 uv

uv 可以根据您的操作系统进行安装:

  • macOS 和 Linux: 通过 curlbrew 进行安装。

    Bash

    # 使用 curl
    curl -LsSf https://astral.sh/uv/install.sh | sh
    
    # 或者使用 brew (如果已安装 Homebrew)
    brew install uv
    
  • Windows: 参照官方文档进行安装。通常可以通过 pip 或下载预编译的二进制文件。

    Bash

    # 如果您已经安装了 pip,可以使用 pip 安装 uv
    pip install uv

3. 第二步:创建并激活虚拟环境

强烈建议在独立的虚拟环境中安装Python包,以避免修改操作系统可能依赖的系统范围包。

  1. 创建虚拟环境:在您希望的项目文件夹中,运行 uv venvuv venv .venvuv sync 命令也会在 .venv 子文件夹中创建一个独立的虚拟环境。

    Bash

    uv venv
    # 或
    uv venv .venv
    
  2. 激活虚拟环境

    • macOS/Linux

      Bash

      source .venv/bin/activate
      
    • Windows

      PowerShell

      .venv\Scripts\activate
      # 或者在某些 shell 中
      source .venv/Scripts/activate
      
    • 请注意,每次启动新的终端会话时都需要激活虚拟环境

  3. 停用环境:您可以通过运行 deactivate 命令来停用环境。

    Bash

    deactivate
    
  4. 删除虚拟环境:如果您想从头开始删除虚拟环境,只需删除 .venv 文件夹即可。

    Bash

    rm -rf .venv  # macOS/Linux
    rmdir /s /q .venv # Windows

4. 第三步:使用 uv 进行包管理

激活虚拟环境后,您可以使用 uv 来安装、卸载和管理Python包:

  • 安装所有必需的包

    • requirements.txt 文件安装

      Bash

      uv pip install -r requirements.txt
      
    • 直接从 GitHub URL 安装

      Bash

      uv pip install -r https://raw.githubusercontent.com/rasbt/LLMs-from-scratch/refs/heads/main/requirements.txt
      
    • 使用原生 uv 命令从 pyproject.toml 安装:运行 uv sync 命令。如果您的系统上没有 Python 3.11,uv 将为您下载并安装它。

      Bash

      uv sync
      
  • 安装新包

    • 使用 uv pip install <包名>

      Bash

      uv pip install requests
      
    • 使用原生 uv 命令:uv add <包名>。这会将包添加到 pyproject.toml 中。

      Bash

      uv add numpy
      
  • 卸载包

    • 使用原生 uv 命令:uv remove <包名>

      Bash

      uv remove requests
      
  • 重新安装包:如果遇到特定包的问题,可以尝试使用 uv pip install --force-reinstall <包名> 重新安装。

    Bash

    uv pip install --force-reinstall some-package
    
  • 回退选项:如果 uv 命令因某些依赖项而出现问题(例如在使用 Windows 时),您可以随时回退到使用常规 pip 命令:

    Bash

    pip install -r requirements.txt
    # 或
    pip install -U -r https://raw.githubusercontent.com/rasbt/LLMs-from-scratch/refs/heads/main/requirements.txt

运行代码及 JupyterLab

环境设置完成后,您可以开始运行代码和使用JupyterLab:

  • 启动 JupyterLab:可以通过 uv run jupyter lab 命令启动 JupyterLab 实例。

    Bash

    uv run jupyter lab
    
  • 跳过 uv run 命令:如果您觉得输入 uv run 繁琐,可以手动激活虚拟环境,然后直接运行脚本或启动 JupyterLab。例如,在 Linux/macOS 上:

    Bash

    source .venv/bin/activate
    jupyter lab
    
  • 故障排除:如果 jupyter lab 命令出现问题,可以使用虚拟环境内的完整路径启动,例如 .venv/bin/jupyter lab (Linux/macOS) 或 .venv\Scripts\jupyter-lab (Windows)。


uv 的未来展望

作为 Python 包管理领域的新生力量,uv 的未来充满潜力。它不仅解决了现有工具在速度和效率上的痛点,更预示着 Python 基础设施未来发展的方向:

  • 更深度的集成与生态系统完善: 随着 uv 社区的壮大,我们预计它将与更多现有的 Python 工具链、IDE(如 VS Code)和 CI/CD 平台进行深度集成,提供更加无缝的开发体验。

  • 功能集的持续扩展: 尽管目前 uv 主要聚焦于包安装和依赖解析,但未来可能会看到其功能集向更全面的项目管理方向发展,例如更智能的环境同步、缓存管理甚至构建系统集成。

  • 推动 Python 社区标准演进: uv 的高性能和优秀设计可能会对未来的 Python 打包和分发标准产生积极影响,促使整个生态系统向更高效、更现代化的方向发展。

  • 作为 Rust 赋能 Python 的典范: uv 的成功也再次证明了 Rust 语言在构建高性能、安全基础设施方面的强大能力。未来,我们可能会看到更多由 Rust 驱动的 Python 工具出现,共同提升 Python 生态系统的整体性能和健壮性。

uv 的出现为 Python 开发者带来了前所未有的速度和便利。希望这篇指南能帮助您全面了解 uv 的优势,并将其应用到您的下一个项目中,开启更高效、更愉快的 Python 开发之旅!

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐