对于 Python 初学者来说,uv 是一个现代化的 Python 项目管理工具,核心定位是「替代 pip + venv + pip-tools + tox」的一站式解决方案------简单理解:它把 Python 开发中「创建虚拟环境、安装依赖、打包项目、运行测试」等常用操作,整合到了一个工具里,而且速度极快、用法极简。
一、先搞懂:uv 到底是什么?
uv 的全称是 Ultrafast Virtualenv(超快虚拟环境),但现在功能早已超出「虚拟环境」范畴:
-
本质:用 Rust 语言编写的 Python 生态工具(底层不是 Python,所以速度飞快);
-
核心功能:
-
管理虚拟环境(创建、激活、删除);
-
安装/卸载/更新依赖(替代 pip);
-
锁定依赖版本(替代 pip-tools 的
pip-compile); -
运行项目/脚本(替代
python xxx.py或venv/bin/python); -
打包项目(替代 setuptools)、运行测试(替代 tox)。
-
你可以把它理解为「Python 开发的瑞士军刀」------以前需要记 pip install、python -m venv、pip-compile 等一堆命令,现在用 uv 一个命令就能搞定。
二、为什么要用 uv?(核心好处)
对初学者来说,uv 的最大价值是「简化流程 + 提升效率」,具体有 3 个关键优势:
1. 速度快到离谱(最直观)
uv 用 Rust 编写,比传统的 Python 工具快 10-100 倍:
-
安装依赖:比如安装
requests,pip 可能要几百毫秒,uv 只要几十毫秒; -
创建虚拟环境:几乎是「瞬间完成」,比
python -m venv快几十倍; -
锁定依赖:处理复杂依赖树(比如 Django + 多个插件)时,uv 几秒就能生成锁定文件,而 pip-tools 可能要几十秒。
2. 用法极简(初学者友好)
不用记一堆零散命令,核心操作就几个,而且逻辑统一:
-
以前创建虚拟环境 + 安装依赖:要写 3 行命令:
Bashpython -m venv .venv # 创建虚拟环境 source .venv/bin/activate # 激活(Linux/Mac)或 .venv\Scripts\activate(Windows) pip install requests # 安装依赖 -
用 uv 只要 1 行(自动创建并激活环境):
Bashuv run pip install requests # 或更简单:uv add requests
3. 功能整合(少装工具)
以前开发一个项目,可能需要装 pip(装依赖)、venv(虚拟环境)、pip-tools(锁定依赖)、tox(测试)等多个工具,还要学各自的用法;而 uv 内置了所有这些功能,不用额外安装,一套命令用到头。
4. 更少踩坑(新手福音)
-
自动处理虚拟环境:不用手动激活,
uv run会自动使用项目的虚拟环境; -
依赖版本锁定:自动生成
uv.lock文件,确保团队所有人、生产环境的依赖版本一致(避免「我本地能跑,线上跑不了」); -
跨平台兼容:Windows、Mac、Linux 用法完全一致,不用记不同系统的激活命令。
三、什么时候适合用 uv?
-
你是初学者,想快速上手 Python 项目开发,不想纠结「虚拟环境怎么激活」「依赖怎么锁定」等琐事;
-
你觉得 pip 安装依赖太慢、虚拟环境操作麻烦;
-
你需要开发一个 Python 项目(不是单文件脚本),需要管理依赖、打包或测试。
注意:如果只是写一个简单的单文件脚本(比如 hello.py),直接用系统 Python 或 python hello.py 就行,没必要用 uv;但只要是「多文件 + 依赖」的项目,uv 就能帮你省很多事。
四、如何使用 uv?(初学者 step-by-step)
第一步:安装 uv
uv 的安装非常简单,跨平台通用(推荐用官方脚本,自动适配系统):
1. Windows(PowerShell)
PowerShell
iwr https://astral.sh/uv/install.ps1 -useb | iex
2. Mac/Linux(终端)
Bash
curl -LsSf https://astral.sh/uv/install.sh | sh
3. 验证安装
安装完成后,打开新的终端/命令行,输入:
Bash
uv --version
如果输出类似 uv 0.40.0 的版本号,说明安装成功。
小提示:如果安装后提示「uv 不是内部或外部命令」,重启终端即可(环境变量自动配置)。
第二步:核心用法(从简单到复杂)
uv 的命令设计很直观,核心围绕「项目开发流程」,我们用一个实际场景演示:创建一个项目,安装 requests 依赖,运行脚本。
场景:开发一个「调用接口获取数据」的小项目
1. 初始化项目(可选,但推荐)
先创建项目文件夹,进入文件夹,然后用 uv 初始化项目(自动生成 pyproject.toml 文件,管理项目信息和依赖):
Bash
# 1. 创建文件夹并进入(终端命令)
mkdir my_uv_project && cd my_uv_project
# 2. 初始化项目(生成 pyproject.toml)
uv init
运行 uv init 后,会提示你输入项目名称、作者等信息(直接回车用默认值即可),最终生成 pyproject.toml(类似项目的「说明书」,记录依赖、项目配置)。
2. 安装依赖(替代 pip install)
用 uv add 安装依赖(自动创建虚拟环境,不用手动激活):
Bash
# 安装 requests 依赖(自动下载 + 写入 pyproject.toml + 生成 uv.lock 锁定版本)
uv add requests
-
效果:
-
自动创建
.venv虚拟环境(隐藏文件夹,存放 Python 解释器和依赖); -
在
pyproject.toml中添加requests依赖记录; -
生成
uv.lock文件(锁定依赖的精确版本,避免版本冲突)。
-
补充命令:
-
卸载依赖:
uv remove requests -
更新依赖:
uv update requests(更新到最新版本) -
安装指定版本:
uv add requests==2.31.0
3. 运行脚本(替代 python <xxx.py>)
创建一个脚本文件 main.py,内容如下(用 requests 调用接口):
Python
import requests
response = requests.get("https://api.github.com/users/octocat")
print("GitHub 章鱼猫的名字:", response.json()["name"])
用 uv run 运行脚本(自动使用项目的虚拟环境,不用手动激活 .venv):
Bash
uv run main.py
输出类似:GitHub 章鱼猫的名字: The Octocat,说明运行成功!
小技巧:如果需要在虚拟环境中执行 Python 交互式终端,直接运行 uv run python 即可,自动进入项目的虚拟环境。
4. 锁定依赖(自动完成,无需手动操作)
每次用 uv add/uv remove/uv update,uv 都会自动更新 uv.lock 文件,确保依赖版本固定。如果别人要协作你的项目,只要把 pyproject.toml 和 uv.lock 发给对方,对方用 uv sync 就能一键安装完全相同的依赖:
Bash
# 协作时,根据 lock 文件安装依赖(确保版本一致)
uv sync
5. 其他常用命令(进阶但实用)
(1)手动创建虚拟环境(如果不想用自动生成的 .venv)
Bash
# 创建名为 my_env 的虚拟环境(在当前文件夹下)
uv venv my_env
(2)运行测试(替代 tox,需先安装 pytest)
Bash
# 安装 pytest 作为开发依赖(仅开发时用,生产环境不装)
uv add pytest --dev
# 运行测试文件(测试文件命名为 test_*.py)
uv run pytest
(3)打包项目(生成可分发的包,比如上传到 PyPI)
Bash
uv build
打包后会生成 dist 文件夹,里面是 .whl 和 .tar.gz 格式的包文件。
五、uv vs pip + venv(初学者对比)
| 操作 | pip + venv | uv |
|---|---|---|
| 创建虚拟环境 | python -m venv .venv |
自动创建(或 uv venv) |
| 激活虚拟环境 | 需手动执行激活命令(跨平台不同) | 无需激活,uv run 自动使用 |
| 安装依赖 | pip install requests |
uv add requests |
| 锁定依赖版本 | 需额外安装 pip-tools,运行 pip-compile |
自动生成 uv.lock,无需额外工具 |
| 运行脚本 | python main.py(需激活环境) |
uv run main.py(无需激活) |
| 速度 | 较慢(Python 编写) | 极快(Rust 编写) |
| 总结:uv 就是「更简单、更快、更整合」的 pip + venv 替代品,初学者不用纠结虚拟环境激活、依赖锁定等细节,专注于写代码即可。 |
六、常见问题(初学者避坑)
- Q:运行 **
uv run main.py** 时,提示「找不到模块 requests」?
A:确保你在项目文件夹下(有 pyproject.toml 和 .venv 的文件夹),且已经用 uv add requests 安装了依赖。如果还是不行,删除 .venv 和 uv.lock,重新运行 uv sync 即可。
- Q:Windows 下安装后,终端提示「uv 不是内部或外部命令」?
A:重启 PowerShell/命令行(安装脚本会自动配置环境变量,重启后生效)。
- Q:可以用 uv 和 pip 混用吗?
A:不推荐!如果用 uv 管理依赖,就一直用 uv add/uv remove,不要用 pip install(会导致依赖版本不一致,uv.lock 失效)。
- Q:虚拟环境在哪里?
A:默认在项目文件夹下的 .venv 文件夹(隐藏文件夹),如果想自定义路径,用 uv venv /path/to/env 创建。
最后总结
uv 是 Python 生态的「新工具」,核心优势是「快 + 简单 + 整合」,特别适合初学者跳过「虚拟环境、依赖管理」的坑,快速进入项目开发。
-
简单场景(单文件脚本):不用 uv;
-
项目场景(多文件 + 依赖):优先用 uv,省时间、少踩坑;
-
核心命令记 4 个就够:
uv init(初始化)、uv add(装依赖)、uv run(运行脚本)、uv sync(同步依赖)。
如果后续需要更复杂的操作(比如配置镜像源、自定义虚拟环境路径),可以再查 uv 官方文档(https://docs.astral.sh/uv/),但初学者先掌握上面的用法,就能应对 90% 的项目开发场景了!