pip 是 Python包管理工具。uv是一个拥有环境管理、依赖管理、Python版本管理、运行脚本、打包发布等多种功能的Python一体化工具链,集齐了venv、virtualenv、pip、poetry能力于一身。
uv对于包的解析安装速度比pip快数十倍,配置虚拟环境的速度也比virtualenv快数十倍。
uv 是一个 超快的 Python 包管理器,它集成了:
- 包安装(替代
pip) - 虚拟环境管理(替代
virtualenv) - 锁定文件(兼容
pip-tools和Poetry)
1、安装uv
1.1 通过pip安装
|
1
|
pip install uv |
1.2 macOS和Linux:
|
1
|
curl -LsSf https://astral.sh/uv/install.sh | sh |
1.3 Windows:
|
1
|
powershell -c "irm https://astral.sh/uv/install.ps1 | iex" |
uv工程默认会生成4个文件:
.python-version:记录当前工程的Python版本。
main.py:主脚本。
pyproject.toml:记录当前uv工程的依赖情况。
README.md:工程的说明文件。
2、配置环境
使用uv init命令来创建Python项目

然后在Python项目中添加依赖,使用 uv add命令实现,比如 uv add requests
移除依赖 比如 uv remove requests
uv remove: 移除依赖
uv sync: 同步依赖到虚拟环境中
uv lock: 生成锁文件
uv run: 在虚拟环境中运行脚本
uv tree: 查看依赖列表
uv build: 生成发布包
uv publish: 发布到PyPI
uv pip list: 查看安装的库
使用虚拟环境
|
1
2
|
# 创建一个新的虚拟环境uv venv myproject |
使用这个命令可以为项目初始化一个Python虚拟环境,并且可以指定Python解释器版本。
|
1
|
uv venv --python 3.10 |
可以通过以下命令直接创建工程并指定python解释器版本。
|
1
|
uv init myproject -p 3.10 |
激活虚拟环境
|
1
2
3
4
5
|
# Linux/macOS:source myproject/bin/activate# Windows:myproject\Scripts\activate |
3、包管理
uv 能实现pip的所有功能,语法一致 ,而且比pip安装包的速度更快
比如说安装第三方库,使用 uv pip install命令实现
uv pip show: 显示已安装包的细节
uv pip freeze: 显示已安装包列表及其版本号
uv pip check: 检查当前环境是否有兼容的软件包
uv pip uninstall: 卸载包
uv pip tree: 查看环境依赖
|
1
2
3
4
5
6
7
8
9
10
11
|
# 安装单个包uv pip install requests# 安装多个包uv pip install requests numpy pandas# 安装指定版本的包uv pip install "django>=4.0,<5.0"# 从 requirements.txt 安装uv pip install -r requirements.txt |
安装依赖
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
# 安装项目依赖(从 pyproject.toml)uv pip install -e .# 安装开发依赖uv pip install -e ".[dev]"# 安装所有可选依赖uv pip install -e ".[dev,docs,web]"# 生成锁定文件uv pip freeze > requirements.lock# 同步依赖(确保环境与 requirements.txt 完全一致)uv pip sync requirements.txt |
添加依赖
|
1
2
3
4
5
6
7
8
9
10
11
12
|
# 添加生产依赖uv add requestsuv add "django>=4.0,<5.0"uv add requests beautifulsoup4 pandas# 添加开发依赖uv add --dev pytest black flake8uv add --dev "pytest>=7.0"# 添加可选依赖组uv add --group docs sphinx sphinx-rtd-themeuv add --group web fastapi uvicorn |
4、管理Python版本
uv可以安装Python,以及对其版本进行管理。比如安装不同版本Python:
uv python install 3.10 3.11 3.12
uv python list: 查看安装的Python版本
uv python pin: 将当前项目固定为使用特定 Python 版本
uv python uninstall: 卸载某版本Python
5、执行Python脚本
执行脚本,使用 uv run命令, 如: uv run test.py
1. 明确指定版本(最高优先级)
|
1
2
3
|
uv run --python 3.11 script.pyuv run --python python3.12 script.pyuv run --python /usr/bin/python3.10 script.py |
2. 项目配置文件
如果有 pyproject.toml:
|
1
2
|
[project]requires-python = ">=3.9" |
或者 .python-version 文件:
|
1
|
3.11.5 |
3. 环境变量
|
1
2
|
export UV_PYTHON=3.11uv run script.py |
6、场景功能覆盖
uv 在高性能之外,构建了覆盖开发全周期的功能矩阵,实现从环境管理到项目部署的一体化支持:
-
Python版本管理:支持 Python 3.10/3.11/3.12 等多版本并行安装与快速切换,通过
uv python install命令 10 秒级完成运行环境部署,彻底解决项目间版本冲突问题。 -
工具管理:兼容 pipx 的工具安装逻辑,通过
uv add命令直接安装并运行 Python 应用程序,无缝融入开发工作流。 -
脚本支持:针对单文件脚本提供内联依赖管理,通过
uv add --script为脚本动态注入依赖,避免全局环境或项目污染,实现 “脚本即独立单元” 的轻量化开发。 -
全面的项目管理:生成
uv.lock文件固化依赖版本,结合uv sync命令实现跨环境依赖一致性,提升项目可移植性。 -
工作区支持:对于大型项目,uv支持Cargo风格的工作区。
-
全局缓存:uv节省磁盘空间,通过全局缓存实现依赖去重。
7、使用场景
想使用Python 3.12,但尚未安装。我们可以先运行以下命令让uv帮我们安装,然后再设置虚拟环境:
|
1
|
uv python install 3.12 |
准备好创建虚拟环境时,运行:
|
1
|
uv venv --python 3.12 |
需要 requirements.txt文件,可以运行:
|
1
|
uv pip compile pyproject.toml -o requirements.txt |
可以随时通过 uv pip sync 从 requirements文件安装依赖。
8、高级玩法
|
1
2
3
4
5
|
import requestsres = requests.get('http://www.baidu.com')print(res.text) |
没有安装request,运行会报错

可以这样运行,因为这样无需全局安装依赖或在不需要的项目中安装,就能以隔离的方式运行这个脚本
|
1
|
uv add --script run.py requests |
9、从其他工具迁移
从pip + venv迁移
|
1
2
3
|
# 有requirements.txt的项目uv inituv add -r requirements.txt |
从Poetry迁移
|
1
2
|
# Poetry项目直接兼容uv sync # 自动识别pyproject.toml |
从Pipenv迁移
|
1
2
3
4
5
|
# 导出现有依赖pipenv requirements > requirements.txtuv inituv add -r requirements.txtrm Pipfile Pipfile.lock # 清理旧文件 |
10、遇到问题?秒速解决!
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
# 🔧 清理缓存uv cache clean# 🔄 重建环境rm -rf .venv && uv sync# 🔍 查看依赖树uv tree# 🐛 详细日志调试uv sync --verbose# ✅ 检查配置uv --version# 依赖冲突解决uv lock --resolution lowest-direct# 验证环境一致性uv lock --check# 强制重新解析uv lock --upgrade |
