什么是 uv?

uv 是一个用 Rust 编写的高速、一体化的 Python 包管理工具,由 Astral 公司开发(该公司也是著名的 Python 代码格式化工具 Ruff 的创造者)。

它的设计目标是取代传统的 pippip-toolsvirtualenvconda 等多个工具,用一个统一的、极速的工具来管理 Python 项目的依赖、虚拟环境和更多任务。


uv 的核心特点

  1. 极致的速度

    • 由于使用 Rust 编写,并在底层进行了大量优化,uv 在依赖解析和包安装方面比 pippip-tools10-100 倍
    • 它利用了全局缓存,一旦下载过某个包,其他项目再使用时就无需重新下载。
  2. 一体化工具

    • 包管理:替代 pip,安装、卸载依赖。
    • 虚拟环境管理:替代 venv / virtualenv,快速创建和管理虚拟环境。
    • 依赖锁定与解析:替代 pip-tools,通过 uv lock 生成精确的、可复现的依赖锁文件。
    • 项目初始化:类似 npm create,可以快速从模板创建新项目。
    • Python 版本管理:可以自动查找并安装所需的 Python 解释器。
  3. 与现有生态兼容

    • 完全支持 pyproject.tomlrequirements.txt 文件。
    • 生成的 uv.lock 锁文件与 poetry 的格式类似,确保了依赖关系的绝对一致性。
  4. 跨平台

    • 在 Windows、macOS 和 Linux 上都能完美运行。

如何安装 uv

安装非常简单,通常只需一行命令:

macOS / Linux:

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

安装后,重启终端或运行 source ~/.bashrc(或对应 shell 的配置文件)即可。

Windows (Powershell):

powershell -c "irm https://astral.sh/uv/install.ps1 | iex"

使用 pipx:

pipx install uv

uv 的核心命令与使用场景

以下通过对比传统工作流和 uv 工作流来展示其用法。

1. 初始化新项目

传统方式:

mkdir my-project && cd my-project
python -m venv .venv
source .venv/bin/activate  # Linux/macOS
# .venv\Scripts\activate   # Windows
pip install requests pandas

uv 方式:

# 一键创建项目目录、虚拟环境并安装依赖
uv init my-project
cd my-project
uv add requests pandas

uv init 命令极大地简化了项目搭建流程。

2. 安装项目依赖(类似 pip install -r requirements.txt

假设你有一个 requirements.txt 文件。

传统方式:

pip install -r requirements.txt

uv 方式:

uv pip install -r requirements.txt
# 或者更简单的(在项目目录下)
uv sync

uv sync 命令会读取 pyproject.tomlrequirements.txt,并依据锁文件 uv.lock(如果存在)来安装所有依赖。

3. 管理虚拟环境

uv 的虚拟环境管理是自动且无缝的。

  • 激活虚拟环境
    source .venv/bin/activate  # 方式不变,uv 创建的 .venv 是标准结构
    
  • 在虚拟环境中安装包
    uv add requests  # 这会自动安装到当前项目的虚拟环境中
    
  • 无需显式激活运行命令
    uv run python my_script.py  # 自动在项目虚拟环境中执行脚本
    uv run pytest               # 自动在项目虚拟环境中运行 pytest
    
4. 依赖锁定与可复现性(类似 Poetry

这是 uv 相对于传统 pip 的一大优势。

  • 生成锁文件

    uv lock
    

    这会创建一个 uv.lock 文件,精确锁定了所有直接和间接依赖的版本。

  • 根据锁文件安装

    uv sync
    

    在任何机器上执行此命令,都能保证安装完全一致的依赖环境,非常适合 CI/CD 和生产部署。

5. 使用 pyproject.toml

uv 对现代 Python 项目的 pyproject.toml 支持得非常好。

  • 添加依赖

    uv add requests
    # 这会自动将 requests 添加到 pyproject.toml 的 [project] 或 [tool.uv] 部分
    
  • 安装 pyproject.toml 中的所有依赖

    uv sync
    

为什么你应该考虑使用 uv?

特性 传统工具 (pip + venv) uv
速度 极快
一体化 需要多个工具 一个工具搞定所有
可复现性 依赖 requirements.txt,不精确 依赖锁文件,精确复现
用户体验 命令分散,需要记忆 命令直观,符合现代习惯
生态趋势 稳定但陈旧 新兴,由 Ruff 团队背书,发展迅速

总结

uv 不仅仅是 pip 的一个更快替代品,它代表了 Python 包管理向现代化、一体化和开发者体验优先的演进方向。它解决了 Python 长期以来依赖管理工具链碎片化和速度慢的痛点。

对于新启动的 Python 项目,强烈推荐尝试 uv。它的学习曲线平缓,却能带来开发效率的显著提升。对于现有项目,你也可以轻松地通过 requirements.txt 将其迁移到 uv 上。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐