Python诗篇——如何安装可选依赖项?

新手上路,请多包涵

Python 的诗歌依赖管理器允许通过命令指定可选的依赖项:

 $ poetry add --optional redis

导致此配置:

 [tool.poetry.dependencies]
python = "^3.8"
redis = {version="^3.4.1", optional=true}

但是,您实际上如何安装它们?文档似乎暗示:

 $ poetry install -E redis

但这只是抛出错误:

 Installing dependencies from lock file

[ValueError]
Extra [redis] is not specified.

原文由 Granitosaurus 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 838
2 个回答

你需要添加一个 tool.poetry.extras 组到你的 pyproject.toml 如果你想在安装期间使用 --- -E 标记:

 [tool.poetry.extras]
caching = ["redis"]

键指的是您与 poetry install -E 一起使用的词,值是在添加时标记为 --optional 的包列表。当前 不支持 在添加过程中使可选包成为特定组的一部分,因此您必须在 pyproject.toml 文件中手动维护此部分。

这一附加抽象层背后的原因是额外安装通常指的是一些可选功能(在本例中为 caching ),通过安装一个或多个依赖项(在本例中只是 redis )。 poetry 简单地模仿 setuptools ‘这里额外安装的定义,这可能解释了为什么它被如此谨慎地记录下来。

原文由 Arne 发布,翻译遵循 CC BY-SA 4.0 许可协议

我要补充的是,不仅你必须手动添加这个额外部分,而且你的可选依赖项不能在开发部分中。

不起作用 的代码示例:

 [tool.poetry]
name = "yolo"
version = "1.0.0"
description = ""
authors = []

[tool.poetry.dependencies]
python = "2.7"
Django = "*"

[tool.poetry.dev-dependencies]
pytest = "*"
ipdb = {version = "*", optional = true}

[tool.poetry.extras]
dev_tools = ["ipdb"]

但这 会起作用

 [tool.poetry]
name = "yolo"
version = "1.0.0"
description = ""
authors = []

[tool.poetry.dependencies]
python = "2.7"
Django = "*"
ipdb = {version = "*", optional = true}

[tool.poetry.dev-dependencies]
pytest = "*"

[tool.poetry.extras]
dev_tools = ["ipdb"]

原文由 Drachenfels 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏