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 requests uv add "django>=4.0,<5.0" uv add requests beautifulsoup4 pandas # 添加开发依赖 uv add - - dev pytest black flake8 uv add - - dev "pytest>=7.0" # 添加可选依赖组 uv add - - group docs sphinx sphinx - rtd - theme uv 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.py uv run - - python python3. 12 script.py uv 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.11 uv 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 requests res = 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 init uv add - r requirements.txt |
从Poetry迁移
1
2
|
# Poetry项目直接兼容 uv sync # 自动识别pyproject.toml |
从Pipenv迁移
1
2
3
4
5
|
# 导出现有依赖 pipenv requirements > requirements.txt uv init uv add - r requirements.txt rm 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 |