诗歌中的临时演员和团体有什么区别?

dzi*_*iou 22 python-poetry

到目前为止,我已经使用诗歌额外来安装可选的依赖项。例如,在pyproject.toml我定义的

[tool.poetry.dependencies]
...
jupyter = { version = "^1.0.0", optional = true }

[tool.poetry.extras]
notebooks = ["jupyter"...]
Run Code Online (Sandbox Code Playgroud)

然后我可以使用poetry install -E notebooks.

现在我可以看到诗歌将支持团体。我的直觉是上面的例子可以替换为:

[tool.poetry.group.notebooks.dependencies]
jupyter = "^1.0.0"...
Run Code Online (Sandbox Code Playgroud)

然后安装poetry install --with notebooks

现在我想知道团体与临时演员的关系如何。

  1. 组只是一个语法糖,可以简化可选依赖项的定义吗?
  2. 如果是,是否会为了团体而贬低临时演员?
  3. 如果不是,它们之间有什么区别以及两者如何共存?

小智 10

从这里的官方文档https://python-poetry.org/docs/master/managing-dependency/#dependency-groups

除了隐式主组之外,依赖项组必须仅包含开发过程中所需的依赖项。只有使用诗歌才能安装它们。要声明一组在运行时向项目添加附加功能的依赖项,请使用 extras。最终用户可以使用 pip 安装附加功能。

因此,如果您打算使用pip- 来安装某些东西,那么extras就是您的选择。

只能使用 Poetry 安装组。


小智 7

“group”就像你将整个依赖项拆分成多个文件,例如requirements.txt,requirements_test.txt,requirements_doc.txt\xe3\x80\x82你根据需要选择要安装的需求文件,这通常发生在开发过程中。

\n

'extra' 类似于您发布的包的功能切换,外部用户根据自己项目的需要选择安装哪些附加功能\xe3\x80\x82

\n

“group”是为内部开发人员设计的,它既适用于包开发,也适用于应用程序开发。然而,“extra”是为外部 pypi 用户设计的,它仅适用于包。

\n


fin*_*mer 6

Poetry 中的依赖项组使您能够将仅在开发过程中的某些阶段需要的依赖项放在一起 - 单独安装或与其他组组合安装。

唯一的强制组是“主”组,包含 下列出的所有依赖项[tool.poetry.dependencies]。此处定义的依赖项在库/应用程序的运行时需要,而不仅仅是在开发期间。

“Extras”是Python打包中定义可选依赖项的概念,可以定义这些依赖项以在运行时提供可选功能。

由于缺乏替代方案,这些额外功能在用作setuptools构建后端时经常被误用,以定义开发过程中所需的依赖项。