请注意,从2016年12月开始,在setuptools 版本30.3.0中,可以根据空闲符号的答案将包元数据放入setup.cfg中。
问题是 setup.cfg 文件没有执行您想要的操作。它不为setup
函数提供参数。它用于为 setup.py 使可用的命令提供参数。您可以使用 列出受支持 。您应该看到类似以下内容:
(env) gondolin/zender% ./setup.py --help-commands
Standard commands:
build build everything needed to install
build_py "build" pure Python modules (copy to build directory)
.....
install_data install data files
sdist create a source distribution (tarball, zip file, etc.)
这是可以放入 setup.cfg 文件中的部分的列表。您可以使用 列出命令支持的选项。例如,sdist 命令支持以下选项:
(env) gondolin/zender% ./setup.py --help sdist
Common commands: (see '--help-commands' for more)
....
Options for 'sdist' command:
--formats formats for source distribution (comma-separated list)
--keep-temp (-k) keep the distribution tree around after creating archive
file(s)
--dist-dir (-d) directory to put the source distribution archive(s) in
[default: dist]
--help-formats list available distribution formats
通过添加如下所示的 setup.cfg 文件,可以控制用户在项目中运行 时发生的情况。 __
[sdist]
keep-temp = 1
dist-dir = dist/source
因此,… setup.cfg 仅为您的项目配置各种设置命令的行为。该setup
函数确实需要将元数据作为关键字参数提供给它。您可以编写自己的distutils.dist.Distribution
类版本,以从setup.cfg 中提取元数据,并将其作为distclass=
关键字参数提供给setup
。
难题中缺少的一环是,标准Distribution
类没有提供将path
参数传递给distutils.dist.DistributionMetadata
初始化器的方法,该方法几乎完成了您想要的工作- 它使用您提到的电子邮件解析内容读取包信息。您找到的是用于处理PEP-314 /PEP-345元数据文件的代码。该功能未使用此setup
功能。相反,它用于解析嵌入在分布式程序包中的元数据。