如果请求软件包的特定附加功能,则安装依赖项的附加功能

时间:2020-08-29 13:18:49

标签: python python-poetry

我的项目将Celery作为依赖项。这是一个严格的依赖关系,即我的项目离不开它。但是,它可以使用Redis作为后端,而我的应用程序并不需要它。

我希望设置我的软件包,因此,如果用户使用poetry install -E redis安装依赖项,它将安装Celery的redis块(就像在pyproject.toml中将其指定为{ {1}}。

但是,如果用户使用普通的celery = { version="^4.4.0", extras=["redis"] }(没有poetry install),则我不希望安装Celery的Redis依赖项(就像仅将其指定为-E redis一样)

有没有办法将其放入诗歌配置?还是应该跟踪celery = "^4.4.0"的可选要求并将其手动添加到我的celery[redis]文件中?

我已经在此问题上检查了Poetry documentation,但没有提供使用不同选项指定相同依赖项(在我的情况下为pyproject.toml)的方法。

1 个答案:

答案 0 :(得分:0)

这应该通过将redis定义为可选的can you make it a Monad?来起作用,例如:

[tool.poetry]
name = "mypackage"
version = "0.1.0"
description = ""
authors = ["finswimmer <finswimmer@example.org>"]

[tool.poetry.dependencies]
python = "^3.6"
celery = "^4.4.7"
redis = { version = "^3.5.3", optional = true }

[tool.poetry.dev-dependencies]

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

[build-system]
requires = ["poetry>=1.0"]
build-backend = "poetry.masonry.api"