我的项目将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
)的方法。
答案 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"