我可以定义一个包 extra 依赖于同一个包中的另一个 extra 吗?

Can I define a package extra that depends on another extra from the same package?

我正在构建一个小型 Python 包,为此我配置了几个 extras;在我的 setup.cfg 中,我有以下内容:

[options.extras_require]
test =
    coverage>=5,<6
    pytest>=6,<7
    pytest-cov>=2.8.1,<3
lint =
    flake8

这很好用;我可以在我的包目录中执行 pip install .pip install .[test]pip install .[lint]pip install .[test,lint],它会安装正确的东西。

现在,我想创建一个新的 extra,dev,这样 pip install .[dev] 意味着同时安装 testlint extra。这可能吗?怎么样?

我试过了,例如

dev =
    .[test]
    .[lint]

但这会导致解析器错误。我还尝试在依赖项列表中明确引用我的包名称而不是 .,但随后它开始从 PyPI 下载旧版本而不是使用当前目录。

使用interpolation:

[options.extras_require]
test =
  coverage>=5,<6
  pytest>=6,<7
  pytest-cov>=2.8.1,<3
lint =
  flake8
dev =
  %(test)s
  %(lint)s