如何在setup.cfg中添加extras_require

26

setuptools 30.3.0引入了声明式软件包配置,允许我们将大多数选项直接传递给 setuptools.setup 的选项放在 setup.cfg 文件中。例如,给定以下 setup.cfg:

[metadata]
name = hello-world
description = Example of hello world

[options]
zip_safe = False
packages =
  hello_world
install_requires =
  examples
  example1
一个只包含setup.py的文件。
import setuptools
setuptools.setup()

会做出正确的事情。

然而,我还没有找到extras_require的正确语法。在setup参数中,它是一个类似于字典的结构,例如

setup(extras_require={'test': ['faker', 'pytest']})

但是我无法弄清楚在setup.cfg中使用的正确语法。 我尝试阅读文档,但我找不到setuptools在那里期望字典的正确语法。 我也尝试了一些猜测。

[options]
extras_require =
  test=faker,pytest

它失败了。

Traceback (most recent call last):
  File "./setup.py", line 15, in <module>
    'pylint',
  File "/lib/site-packages/setuptools/__init__.py", line 128, in setup
    _install_setup_requires(attrs)
  File "/lib/site-packages/setuptools/__init__.py", line 121, in _install_setup_requires
    dist.parse_config_files(ignore_option_errors=True)
  File "/lib/python3.6/site-packages/setuptools/dist.py", line 495, in parse_config_files
    self._finalize_requires()
  File "/lib/python3.6/site-packages/setuptools/dist.py", line 419, in _finalize_requires
    for extra in self.extras_require.keys():
AttributeError: 'str' object has no attribute 'keys'

读完代码后,我不能百分之百肯定这个功能被支持了,但基于PEP 508,它似乎应该是一个受支持的使用情况。我错过了什么?

1个回答

41

已支持。您需要一个配置部分

[options.extras_require]
test = faker; pytest

关于语法的文档可以在这里找到。


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