到目前为止,我已经使用诗歌额外来安装可选的依赖项。例如,在
pyproject.toml
中我定义了
[tool.poetry.dependencies]
...
jupyter = { version = "^1.0.0", optional = true }
[tool.poetry.extras]
notebooks = ["jupyter"...]
然后我可以使用
poetry install -E notebooks
安装可选依赖项。
现在我可以看到诗歌将支持团体。我的直觉是上面的例子可以替换为:
[tool.poetry.group.notebooks.dependencies]
jupyter = "^1.0.0"...
然后用
poetry install --with notebooks
安装。
现在我想知道团体与群众演员有何关系。
来自此处的官方文档https://python-poetry.org/docs/managing-dependency/
依赖项组(除了隐式
组之外)必须仅包含开发过程中所需的依赖项。只有使用 Poetry 才能安装它们。main
要声明一组依赖项,在运行时向项目添加附加功能,请使用 extras。最终用户可以使用
安装附加功能。pip
因此,如果您打算使用
pip
安装某些内容 - 那么 extras
就是您的选择。
只能使用 Poetry 安装群组。
“group”就像你将整个依赖项拆分成多个文件,例如requirements.txt,requirements_test.txt,requirements_doc.txt。你根据需要选择安装哪个requirements文件,这通常发生在开发过程中。
'extra' 类似于您发布的包的功能切换,外部用户根据自己项目的需要选择安装哪些附加功能。
‘group’是为内部开发者设计的,既适用于包开发,也适用于应用程序开发。然而,“extra”是为外部 pypi 用户设计的,它仅适用于包。
Poetry 中的依赖项组使您能够将依赖项放在一起,您可能只在开发过程中的某些阶段需要 - 单独安装或与其他组组合安装。
唯一的强制组是“主”组,包含
[tool.poetry.dependencies]
下列出的所有依赖项。此处定义的依赖项在您的库/应用程序运行时需要,而不仅仅是在开发期间。
“Extras”是Python打包中定义可选依赖项的概念,可以定义这些依赖项以在运行时提供可选功能。
由于缺乏替代方案,当使用
setuptools
作为构建后端来定义开发过程中所需的依赖项时,这些额外功能经常被滥用。