整体说明
- uv 是一个快速的 Python 包管理器和项目管理工具,由 Astral 公司开发,旨在替代 pip、venv 等工具,提供更快的安装速度和更简洁的使用体验
- uv 通常比 pip 快 10-100 倍
- uv 内置虚拟环境:无需单独管理虚拟环境
- uv 支持项目管理:原生支持
pyproject.toml,详情见附录 - uv 保持了与 pip 相似的命令行接口,对于熟悉 pip 的用户来说很容易上手,同时提供了更现代、更高效的功能
安装 uv
安装 uv 工具:
1
2
3
4
5# 使用 pip 安装
pip install uv
# 或者使用官方安装脚本(推荐)
curl -LsSf https://astral.sh/uv/install.sh | sh安装完成后,可以通过
uv --version验证是否安装成功若提示没有命令,可能是需要配置环境变量,将下面的命令添加到
~/.bashrc中即可:1
source $HOME/.local/bin/env
uv 基本用法介绍
虚拟环境管理
uv 内置了虚拟环境管理功能,无需单独使用 venv 或 virtualenv:
1
2
3
4
5
6
7# 创建并激活虚拟环境(会在当前目录创建 `.venv` 文件夹)
uv venv
source .venv/bin/activate # Linux/macOS 激活环境,切换到当前环境下
deactivate # Linux/macOS 退出激活
# 直接在虚拟环境中运行命令(无需手动激活)
uv run python --version若使用
source .venv/bin/activate激活环境- 像 conda 一样,会切换到指定的虚拟环境下,直接使用
which python可访问到当前项目的 python 文件 - 但此时
pip不会像 conda 一样替换,还是需要使用uv pip来使用,直接使用which pip得到的还是通用的pip
- 像 conda 一样,会切换到指定的虚拟环境下,直接使用
IDEA 环境配置
- 在使用
uv venv创建了虚拟环境以后,可以使用 IDEA 直接选择./.venv/bin/python作为解释器
类似 pip 的包安装与管理
- uv 可以像 pip 一样安装和管理 Python 包:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20# 安装包
uv pip install requests
# 安装特定版本的包
uv pip install requests==2.31.0
# 从requirements.txt安装
uv pip install -r requirements.txt
# 升级包
uv pip install --upgrade requests
# 卸载包
uv pip uninstall requests
# 查看已安装的包
uv pip list
# 导出依赖到requirements.txt
uv pip freeze > requirements.txt
uv 运行 python 文件
- 使用
uv run可以在虚拟环境中直接运行命令,无需手动激活环境 :1
2
3
4
5
6
7
8# 运行Python解释器
uv run python
# 运行脚本
uv run script.py
# 运行命令行工具(如pytest)
uv run pytest tests/
附录:uv 高级功能
缓存管理
- uv 具有高效的缓存机制,可以手动管理缓存:
1
2
3
4
5# 清理缓存
uv cache clean
# 查看缓存大小
uv cache size
配置镜像源
uv 可以配置自己的 pip 源,配置国内镜像源加快下载速度,比如:
1
2# 设置 PyPI 镜像源
export UV_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple/- 注:也可以永久添加到环境变量中方便使用
临时指定镜像源的方式为:
1
uv add <package> --index-url https://pypi.tuna.tsinghua.edu.cn/simple/
安装时输出源信息:
1
uv add requests --verbose # 注意:谨慎打开 `--verbose` 这个参数,会输出特别长的日志
构建和发布包
- uv 支持构建和发布 Python 包到 PyPI:
1
2
3
4
5# 构建包
uv build
# 发布包到 PyPI
uv publish
附录:uv 管理 python 项目
- uv 支持现代 Python 项目管理,包括 pyproject.toml:
1
2
3
4
5
6
7
8
9
10
11
12
13
14# 初始化新项目(创建 pyproject.toml)
uv init my_project # 在当前目录下创建 my_project 文件夹并生成基本文件
# 生成 README.md main.py pyproject.toml 等文件
cd my_project
# 添加依赖(会更新 pyproject.toml)
uv add requests # 生产依赖,将 requests 添加到 pyproject.toml 的 dependencies 列表中同时安装 requests 及其依赖(注:requests 的依赖不会添加到 pyproject.toml 中)
uv add --dev pytest # 开发依赖,仅开发阶段需要使用到的依赖(将 pytest 添加到 pyproject.toml 的 dev 列表中),pytest 就是最常见的开发依赖,prod 环境不需要
# 安装项目依赖(根据 pyproject.toml)
uv sync # 补充
# 运行项目中的脚本
uv run my_script.py