目录
- 前言
- [1 `uv` 是什么?](#1
uv是什么?) -
- [1.1 基本介绍](#1.1 基本介绍)
- [1.2 核心优势](#1.2 核心优势)
- [2 安装 `uv`](#2 安装
uv) -
- [2.1 使用官方脚本安装(推荐)](#2.1 使用官方脚本安装(推荐))
- [2.2 使用 `cargo` 安装(Rust 开发者适用)](#2.2 使用
cargo安装(Rust 开发者适用))
- [3 `uv` 的核心功能详解](#3
uv的核心功能详解) -
- [3.1 初始化虚拟环境](#3.1 初始化虚拟环境)
- [3.2 安装依赖包](#3.2 安装依赖包)
- [3.3 冻结依赖(Freeze)](#3.3 冻结依赖(Freeze))
- [3.4 卸载依赖](#3.4 卸载依赖)
- [3.5 虚拟环境激活与执行命令](#3.5 虚拟环境激活与执行命令)
- [4 `uv` 与 `pip` 的详细对比](#4
uv与pip的详细对比) - [5 实战:用 `uv` 创建一个 Flask 项目](#5 实战:用
uv创建一个 Flask 项目) - [6 仅此一次:常用 `uv` 命令速查表](#6 仅此一次:常用
uv命令速查表) - [7 总结与展望](#7 总结与展望)
前言
在 Python 的生态中,依赖管理一直是开发者绕不开的问题。尽管 Python 官方推荐使用 venv + pip 来创建虚拟环境并安装依赖,但随着项目复杂度提升,这种方式逐渐暴露出依赖冲突、安装速度慢、环境不易重现等问题。为此,社区诞生了诸如 poetry、pip-tools、virtualenv 等第三方工具,以补足官方方案的不足。
然而,它们通常功能割裂、配置复杂,难以一体化统一管理。
uv,由 Astral 团队开发,是近年来迅速崛起的一款现代化 Python 包和虚拟环境管理工具。它以极致的安装速度、原生虚拟环境支持、完整锁定机制和友好的 CLI 界面,正在成为 pip 的有力替代品。
本文将系统介绍 uv 的核心功能、使用方法,并与 pip 进行全面对比,帮助你在现代 Python 项目中高效管理依赖。
1 uv 是什么?
1.1 基本介绍
uv 是一个使用 Rust 语言编写的现代 Python 包管理工具,它集成了以下功能:
- 虚拟环境管理(替代
venv或virtualenv) - 包的快速安装和卸载(兼容
pip生态) - 自动解析和锁定依赖关系(类似
poetry或pip-tools) - 内置项目初始化、环境激活、执行 Python 脚本等常用操作
它的目标是成为 Python 项目开发过程中的「包管理全能选手」,实现开发、测试、部署中的环境一致性和效率最大化。

1.2 核心优势
- 🚀 速度快 :基于 Rust 构建,安装速度远超
pip,尤其在冷启动或首次构建时表现突出 - 🧩 依赖解析强:内置依赖解析器,避免版本冲突
- 📦 一体化管理:将虚拟环境、依赖安装、锁文件管理等功能合并,避免多工具组合
- ☁️ 支持未来场景:适配云原生和容器场景,适合 CI/CD 中部署使用
2 安装 uv
2.1 使用官方脚本安装(推荐)
bash
curl -Ls https://astral.sh/uv/install.sh | sh
该命令会自动下载并安装 uv 的可执行文件,并添加至 $HOME/.cargo/bin 路径下。
2.2 使用 cargo 安装(Rust 开发者适用)
如果你已经安装了 Rust 编译器,也可以使用 cargo 直接安装:
bash
cargo install uv
安装完成后,可使用 uv --version 检查是否安装成功。

3 uv 的核心功能详解
3.1 初始化虚拟环境
uv 提供了简洁的虚拟环境创建命令:
bash
uv venv
执行后将在当前目录创建 .venv 文件夹,并自动识别 Python 解释器版本,无需额外配置。
3.2 安装依赖包
在虚拟环境中安装依赖,只需使用:
bash
uv pip install requests
该命令行为与 pip 完全一致,但速度更快,依赖解析更安全。
还支持批量安装依赖:
bash
uv pip install -r requirements.txt
或使用生成锁文件的方式:
bash
uv pip install flask numpy --generate-lockfile
生成的 uv.lock 文件可确保团队成员或生产环境的依赖版本完全一致。
3.3 冻结依赖(Freeze)
类似 pip freeze,可输出当前安装的依赖及版本号:
bash
uv pip freeze > requirements.txt
也可以使用 uv pip compile 来生成更精确的依赖树,类似 pip-tools 的 pip-compile。
3.4 卸载依赖
bash
uv pip uninstall requests
命令形式同 pip,使用体验无缝迁移。
3.5 虚拟环境激活与执行命令
- 激活环境:
bash
uv venv activate
在 Linux/macOS 中,会激活 .venv 环境,相当于:
bash
source .venv/bin/activate
- 执行环境中的 Python 命令:
bash
uv venv exec python app.py
这样可以避免直接进入虚拟环境,适合在 CI/CD 脚本或 makefile 中使用。
4 uv 与 pip 的详细对比
| 特性 | pip | uv |
|---|---|---|
| 安装速度 | 普通 | 极快(Rust 实现) |
| 虚拟环境支持 | 需配合 venv/virtualenv |
原生支持,自动创建 |
| 依赖锁定 | 不支持 | 原生 uv.lock |
| 兼容性 | 高 | 完全兼容 pip |
| freeze 输出 | 有 | 有,更清晰 |
| compile 支持 | 无 | 有(uv pip compile) |
| 是否 all-in-one | 否 | 是 |
| CLI 体验 | 标准 | 更现代,命令统一 |
uv 适用场景
- 个人开发:更快的依赖管理体验
- 团队协作:统一的锁文件,避免"在我电脑上没问题"
- 云原生部署:一键安装,快速构建生产镜像
- 自动化脚本:便于集成进 DevOps 流程
5 实战:用 uv 创建一个 Flask 项目
以下是一个从零开始,用 uv 构建 Python 项目的完整流程:
bash
新建项目目录
mkdir my-flask-app && cd my-flask-app
初始化虚拟环境
uv venv
安装 Flask,并生成锁文件
uv pip install flask --generate-lockfile
冻结当前依赖
uv pip freeze > requirements.txt
创建 app.py
echo "from flask import Flask; app = Flask(__name__); @app.route('/')\ndef home(): return 'Hello, uv!'" > app.py
启动应用
uv venv exec python app.py
此流程中,uv 完全替代了 python -m venv、pip install、requirements.txt 管理、以及虚拟环境激活命令,开发体验非常清晰。
6 仅此一次:常用 uv 命令速查表
uv venv:创建虚拟环境uv venv activate:激活环境uv venv exec <cmd>:执行虚拟环境中的命令uv pip install <pkg>:安装包uv pip uninstall <pkg>:卸载包uv pip install -r requirements.txt:安装依赖列表uv pip freeze > requirements.txt:导出依赖uv pip compile:生成精准依赖树uv lock:生成锁文件
7 总结与展望
随着 Python 项目的规模增长和部署需求的提升,传统的 pip 工具已经难以满足现代开发的需求。uv 的出现,为开发者带来了更快、更安全、更现代的依赖管理体验,尤其适合 DevOps 场景、协作开发和容器化部署。
它不仅能无缝兼容现有的 pip 项目,还通过内建的虚拟环境管理、依赖锁定和 CLI 工具链,大大简化了 Python 项目的生命周期管理。
如果你厌倦了多工具组合(如 venv + pip + pip-tools),希望拥有一个统一、极速、稳定的开发体验,不妨尝试将你的下一个项目交给 uv 管理,相信你会爱上这种新方式。
推荐阅读: