如何将extras_require放入setup.cfg

koj*_*iro 5 python declarative setuptools

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
Run Code Online (Sandbox Code Playgroud)

仅包含一个setup.py

import setuptools
setuptools.setup()
Run Code Online (Sandbox Code Playgroud)

会做所有正确的事情。

但是,我无法找出的正确语法extras_require。在setupargs中,它是一个字典,例如

setup(extras_require={'test': ['faker', 'pytest']})
Run Code Online (Sandbox Code Playgroud)

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

[options]
extras_require =
  test=faker,pytest
Run Code Online (Sandbox Code Playgroud)

它失败。

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'
Run Code Online (Sandbox Code Playgroud)

阅读代码后,我不是100%确定支持此功能,但是基于PEP 508,看来这应该是受支持的用例。我想念什么?

wim*_*wim 6

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

[options.extras_require]
test = faker; pytest
Run Code Online (Sandbox Code Playgroud)

语法记录在这里