uv sync --extra dev命令解读--extra dev
uv sync --extra dev 是根据项目锁文件(uv.lock)同步项目环境,并在同步时包含名为 dev 的额外依赖组(Extra)。
1. 核心组成部分解读
uv sync
这是 uv 用于环境同步的核心命令。它的工作方式类似于 poetry install 或 pdm sync。
- 它会检查你当前的虚拟环境(
.venv)。 - 对比
uv.lock文件,确保虚拟环境中安装的包与锁文件完全一致。 - 双向同步:如果锁文件里有某个包而你环境里没有,它会安装;如果你的环境里多了某些手动安装的包,它会将其卸载,以保证环境的纯净和一致性。
--extra dev (或 -E dev)
在 Python 选项中,extra(额外依赖)通常在 pyproject.toml 中定义。
- 默认情况下,
uv sync只会安装项目的核心运行依赖(dependencies)。 - 加上
--extra dev,就是告诉uv:“除了核心依赖外,把我在dev组里定义的开发依赖(比如pytest,black,flake8等)也一并安装/同步进来。”
2. 配置示例
为了让这个命令生效,你的 pyproject.toml 文件中通常会有类似下面的配置:
1 | [project] |
当你运行 uv sync --extra dev 时,uv 会同时安装 requests、pytest 和 black。
3. 进阶用法与对比
3.1区分 --extra 与 --dev
在 uv 中,由于其设计演进,处理开发依赖有两种常见姿势:
| 命令 | 适用场景 | 对应 pyproject.toml 字段 |
|---|---|---|
uv sync --extra dev |
传统的 PEP 508 / PEP 621 标准可选依赖。 | [project.optional-dependencies] |
uv sync --dev |
uv 专有的、更现代的开发依赖定义方式。 |
[tool.uv.dependency-groups] (PEP 735) |
提示:如果你的项目使用的是比较新的
uv版本,并且依赖定义在[tool.uv.dependency-groups]下,你应该直接使用uv sync(默认会包含开发依赖)或者uv sync --group dev。而--extra主要用于标准的兼容性。
3.2实用参数组合
- 如果你想引入多个额外依赖组:
1 | uv sync --extra dev --extra docs |
- 如果你只想安装核心依赖,排除所有额外/开发依赖:
1 | uv sync --no-dev |