python之UV介绍
uv是一个用 Rust 编写的高速、一体化的 Python 包管理工具,由Astral公司开发(该公司也是著名的 Python 代码格式化工具Ruff的创造者)。它的设计目标是取代传统的pippip-toolsvirtualenvconda等多个工具,用一个统一的、极速的工具来管理 Python 项目的依赖、虚拟环境和更多任务。uv不仅仅是pip的一个更快替代品,它代表了 Python 包管理向现
什么是 uv?
uv 是一个用 Rust 编写的高速、一体化的 Python 包管理工具,由 Astral 公司开发(该公司也是著名的 Python 代码格式化工具 Ruff 的创造者)。
它的设计目标是取代传统的 pip、pip-tools、virtualenv、conda 等多个工具,用一个统一的、极速的工具来管理 Python 项目的依赖、虚拟环境和更多任务。
uv 的核心特点
-
极致的速度
- 由于使用 Rust 编写,并在底层进行了大量优化,uv 在依赖解析和包安装方面比
pip和pip-tools快 10-100 倍。 - 它利用了全局缓存,一旦下载过某个包,其他项目再使用时就无需重新下载。
- 由于使用 Rust 编写,并在底层进行了大量优化,uv 在依赖解析和包安装方面比
-
一体化工具
- 包管理:替代
pip,安装、卸载依赖。 - 虚拟环境管理:替代
venv/virtualenv,快速创建和管理虚拟环境。 - 依赖锁定与解析:替代
pip-tools,通过uv lock生成精确的、可复现的依赖锁文件。 - 项目初始化:类似
npm create,可以快速从模板创建新项目。 - Python 版本管理:可以自动查找并安装所需的 Python 解释器。
- 包管理:替代
-
与现有生态兼容
- 完全支持
pyproject.toml和requirements.txt文件。 - 生成的
uv.lock锁文件与poetry的格式类似,确保了依赖关系的绝对一致性。
- 完全支持
-
跨平台
- 在 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.toml 或 requirements.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 上。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)