管理依赖
管理依赖 #
依赖组 #
Poetry 提供了一种通过组来组织依赖的方式。例如,您可能有一些仅在测试项目或构建文档时才需要的依赖。
要声明一个新的依赖组,请使用 tool.poetry.group.<group>
部分,其中 <group>
是您的依赖组的名称(例如,test
)。
[tool.poetry.group.test] # This part can be left out
[tool.poetry.group.test.dependencies]
pytest = "^6.0.0"
pytest-mock = "*"
所有依赖项必须彼此兼容,因为它们将在安装时被解析,无论它们是否需要安装(参见安装组依赖)。
可以将依赖组视为与依赖项关联的标签:它们不会影响依赖项是否默认被解析和安装,它们只是以逻辑方式组织依赖项的一种方式。
在 tool.poetry.dependencies
中声明的依赖项属于隐式 main
组。
[tool.poetry.dependencies] # main dependency group
httpx = "*"
pendulum = "*"
[tool.poetry.group.test.dependencies]
pytest = "^6.0.0"
pytest-mock = "*"
除了隐式 main
组之外,依赖组只能包含您在开发过程中需要的依赖项。只能使用 Poetry 安装它们。
要声明一组依赖项,这些依赖项在运行时为项目添加额外的功能,请使用extras。最终用户可以使用 pip
安装 Extras。
关于定义 dev
依赖组的说明
从 Poetry 1.2.0 开始,定义 dev
依赖组的正确方法如下
[tool.poetry.group.dev.dependencies]
pytest = "^6.0.0"
pytest-mock = "*"
从 Poetry 1.2.0 开始,这种组表示法是首选,在早期版本中不可用。为了与旧版本的 Poetry 向后兼容,在 dev-dependencies
部分中声明的任何依赖项都将自动添加到 dev
组中。因此,上述表示法和以下表示法是等效的
# Poetry pre-1.2.x style, understood by Poetry 1.0–1.2
[tool.poetry.dev-dependencies]
pytest = "^6.0.0"
pytest-mock = "*"
Poetry 将逐渐放弃 dev-dependencies
表示法,该表示法很快将被弃用,因此建议将您现有的开发依赖项迁移到新的 group
表示法。
可选组 #
可以将依赖组声明为可选。当您有一组仅在特定环境中或出于特定目的才需要的依赖项时,这样做是有意义的。
[tool.poetry.group.docs]
optional = true
[tool.poetry.group.docs.dependencies]
mkdocs = "*"
可以使用 install
命令的 --with
选项,除了默认依赖项之外,还可以安装可选组。
poetry install --with docs
向组添加依赖项 #
add
命令是向组添加依赖项的首选方法。这可以通过使用 --group (-G)
选项来完成。
poetry add pytest --group test
如果组不存在,它将被自动创建。
安装组依赖项 #
默认情况下,执行 poetry install
时,将安装所有非可选组中的依赖项。
可以使用 --without
选项排除一个或多个组
poetry install --without test,docs
您还可以选择加入可选组,方法是使用 --with
选项
poetry install --with docs
当一起使用时,--without
优先于 --with
。例如,以下命令将只安装可选 test
组中指定的依赖项。
poetry install --with test,docs --without docs
最后,在某些情况下,您可能只想安装特定组的依赖项,而不安装默认的依赖项集。为此,可以使用 --only
选项。
poetry install --only docs
如果您只想安装项目的运行时依赖项,可以使用 --only main
表示法
poetry install --only main
如果您想安装项目根目录,而不安装其他依赖项,可以使用 --only-root
选项。
poetry install --only-root
从组中删除依赖项 #
remove
命令支持 --group
选项,用于从特定组中删除包
poetry remove mkdocs --group docs
同步依赖项 #
Poetry 支持所谓的依赖项同步。依赖项同步确保 poetry.lock
文件中锁定的依赖项是环境中唯一的依赖项,并删除任何不必要的依赖项。
这可以通过使用 install
命令的 --sync
选项来完成
poetry install --sync
--sync
选项可以与任何与 依赖项组 相关的选项结合使用,以将环境与特定组同步。请注意,额外的依赖项是单独的。任何未选择安装的额外依赖项始终会被删除,无论 --sync
的值如何。
poetry install --without dev --sync
poetry install --with docs --sync
poetry install --only dev
--sync
选项替换了 --remove-untracked
选项,该选项现在已弃用。分层可选组 #
当您省略 --sync
选项时,您可以安装任何可选组的子集,而不会删除已安装的组。这在多阶段 Docker 构建中非常有用,例如,您可以在不同的构建阶段多次运行 poetry install
。