如何在pyproject.toml中指定“额外”/括号依赖项?

21

我正在开发一个项目,使用Poetrypyproject.toml文件来管理依赖项。其中一个库的文档suggests使用"extra"选项向其中一个依赖项pip-install,如下所示:

pip install google-cloud-bigquery[opentelemetry]

我应该如何在pyproject.toml文件中反映这个要求?目前,有几行代码是这样的:

[tool.poetry.dependencies]
python = "3.7.10"
apache-beam = "2.31.0"
dynaconf = "3.1.4"
google-cloud-bigquery = "2.20.0"

将最后一行改为:
google-cloud-bigquery[opentelemetry] = ">=2.20.0"

产量
Invalid TOML file /home/jupyter/vertex-monitoring/pyproject.toml: Unexpected character: 'o' at line 17 col 22

其他似乎无法正确解析的变体:

google-cloud-bigquery["opentelemetry"] = "2.20.0"

其他 StackOverflow 问题看起来相关,以及几个 不同的 PEP 文档,但我的搜索很复杂,因为我不确定这些是“选项”还是“附加组件”或其他什么。


1
尝试引用左侧字符串 - ti7
@t17 啊!“google-cloud-bigquery[opentelemetry]”=“2.20.0”似乎至少可以解析。谢谢!虽然它仍然告诉我google-cloud-bigquery[opentelemetry] (>=2.0.0)没有匹配的版本,所以可能也不正常工作。 - Sarah Messer
2个回答

29

您可以通过poetry add "google-cloud-bigquery[opentelemetry]"将其添加进来。这将会产生以下结果:

[tool.poetry.dependencies]
...
google-cloud-bigquery = {extras = ["opentelemetry"], version = "^2.34.2"}

啊哈 - 如果它能正常工作,这看起来就是想要的! - ti7
在 Poetry v1.3.2 中确认:poetry add "aiohttp[speedups]" 导致 pyproject.toml 条目:aiohttp = {extras = ["speedups"], version = "^3.8.3"},并成功安装了依赖项。 - Liquidgenius

-3

尽管语法看起来有点奇怪,但TOML支持引用键以转义特殊字符,从某个版本开始"更少限制的裸键"
https://github.com/toml-lang/toml/pull/283

"google-cloud-bigquery[opentelemetry]"

这个语法对您可能有用!

[tool.poetry.dependencies]
python = "3.7.10"
apache-beam = "2.31.0"
dynaconf = "3.1.4"
"google-cloud-bigquery[opentelemetry]" = ">=2.20.0"

TOML可能期望使用^>=,尽管从docs中的语法并不清楚。

当我尝试这样做时,它似乎尝试安装一个带有文字名称“google-cloud-bigquery[opentelemetry]”的软件包版本,而不是具有选项“opentelemetry”的软件包“google-cloud-bigquery”。 - Sarah Messer
1
哎呀,我见过类似的东西,但从未使用过Poetry - 很高兴其他答案可行! - ti7

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接