依赖分组
使用流程
# 全局下安装uv
pip install uv
# 创建虚拟环境
uv venv .venv
# 指定版本
uv venv --python 3.11 .venv
# 初始化uv相关文件
uv init
# 根据pyroject.toml安装环境
uv sync
# 将pyproject.toml中的包 安装到当前激活的环境中
uv sync --active
# 安装包
uv add pkg-name
# 查看包列表
uv pip list
# 移除包
uv remove pkg-name
# 更新uv
pip install --upgrade uv
分组管理
uv sync
:等价于安装 [project.dependencies]安装到指定分组:
uv add --group local numpy
安装 指定分组的包:
uv sync --group dev
安装多个分组:
uv sync --group prod --group test
# 配置uv中使用的pip安装源
[[tool.uv.index]]
url = "http://mirrors.aliyun.com/pypi/simple/"
default = true
# 禁用 F403(无法解析的导入 *)和 F405(未定义的变量,由于 * 导入)
[tool.ruff.lint]
ignore = ["F403", "F405"]
[project]
name = "ProjectName"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.12"
dependencies = [
# 基础依赖(所有环境共享)
"loguru>=0.7.3",
]
# 依赖分组
# uv add --group group-name pkg-name
# uv sync --group group-name
[dependency-groups]
# 开发环境依赖(如测试、格式化工具)
dev = [
"pytest>=7.0", # 测试工具
"black>=23.0", # 代码格式化
"ruff>=0.1", # lint 工具
]
# 生产环境额外依赖(如部署相关)
prod = [
"gunicorn>=20.1", # WSGI 服务器
"uvicorn>=0.23.0", # ASGI 服务器
]
# 测试环境依赖(可继承 dev 并添加专属包)
test = [
"pytest-cov>=4.0", # 测试覆盖率
*dev, # 继承 dev 分组的所有依赖(TOML 1.0 语法)
]
高级特性
uv 作为一款现代的 Python 包管理工具,除了基础的包安装和环境管理功能,还集成了一系列旨在提升开发效率和可靠性的高级功能。下面这个表格汇总了它的核心高级特性:
🔧 项目管理与依赖控制
uv 在此方面的设计非常实用和严谨。
项目初始化与结构:使用
uv init
可以快速创建一个结构规范的项目,自动生成src
目录、测试目录、pyproject.toml
等。精细的依赖分组:你可以在
pyproject.toml
中定义不同的依赖组,例如dev
(开发)、test
(测试)、docs
(文档)。这允许你根据不同的场景安装不同的依赖集合。
通过uv add --group dev pytest black
添加包到指定组,再使用uv sync --group dev,test
来同步特定组的依赖。可靠的锁文件机制:
uv.lock
文件确保了依赖环境的完全可复现。命令uv lock
会解析当前依赖并更新锁文件。在生产环境下,使用uv sync --frozen
可以严格安装锁文件中记录的版本,避免意外升级引入风险。
⚡️ 高效的脚本与工具运行
uv 简化了执行环节。
uv run
:这是 uv 的一个亮点。你无需手动激活虚拟环境,直接使用uv run python your_script.py
或uv run pytest
,uv 会自动在当前项目的上下文中执行命令。全局工具管理:
uv tool
命令可以替代pipx
,用于安装和运行独立的 Python 命令行工具。
🐍 无缝的Python版本管理
uv 可以帮你安装和管理多个 Python 解释器,无需依赖 pyenv
。
使用
uv python install 3.9 3.10 3.11
可以一次性安装多个版本。创建虚拟环境时,可以通过
uv venv --python 3.11
直接指定使用已安装的特定版本。
🌐 配置镜像源加速下载
对于国内用户,可以通过修改配置文件来大幅提升下载速度。
创建或编辑
~/.config/uv/uv.toml
文件(Linux/macOS)或%USERPROFILE%\.config\uv\uv.toml
(Windows)。填入国内镜像源,例如:
[[index]]
url = "https://pypi.tuna.tsinghua.edu.cn/simple/"
default = true
其他可选镜像源包括阿里云、中科大和豆瓣源。
实用参数与技巧
清理与重建:如果虚拟环境出现问题,
uv venv --force
可以强制重新创建。uv sync --clean
会在同步前清理环境,确保纯净。依赖排查:当依赖关系复杂导致冲突时,
uv tree
可以展示依赖树,而uv tree --reverse <package-name>
可以帮助你查看是哪个包引入了特定的依赖。
评论区