我不完全清楚setup.cfg
的状态是什么。我正在为我的other question寻找有关PEP 508环境标记的解决方案,我变得非常困惑。
对我来说,setup.cfg
似乎是对setup.py
的改进,因为它是声明性的,不涉及运行任意代码以使包可安装,使得分发恶意Python包更加困难,使其更容易运行Python包注册表等。
所以,here in setuptools
docs提到setuptools支持30.3.0 (8 Dec 2016)
版本中的setup.cfg,这是最近的版本。所以,这必须是一件新事物,对吗?
不完全。 distutils
had support for setup.cfg
for a long time,至少从2.6开始。已经9年了。
与此同时,here in wheel
docs已经说过setup.cfg
现已弃用,并且最好通过extras_require
参数提供环境标记。它提到了setuptools,所以它不是setup.cfg
可能被弃用的distutils味道。
那么,究竟发生了什么? {@ 1}}已被弃用,还是最近的做法?
答案 0 :(得分:0)
不,setup.cfg
它没有被弃用,你提到的文档具有误导性。
有一些严重的原因,例如安全与setup.py
需要执行这一事实有关,这是远离它的主要原因。
这是额外的肮脏技巧:
[options.extras_require]
pdf = ReportLab>=1.2; RXP
rest = docutils>=0.3; pack ==1.1, ==1.3
答案 1 :(得分:0)
我想对近期的发展做一些说明:
PEP 518仍处于临时状态,但我将其解释为邀请使用pyproject.toml
而不是setup.cfg
。来自PEP的报价:
setuptools通常将
setup.cfg
用作两个问题 格式。一种是它们是.ini
文件,存在上述问题 在上面的configparser讨论中。另一个是针对 该文件从未经过严格定义,因此未知 哪种格式将来可以安全使用而不会潜在 令人困惑的setuptools安装。
PEP 518将
pyproject.toml
定义为配置文件以存储内部版本 Python项目的系统要求。借助诸如 Poetry或Flit,它可以完全取代对setup.py
的需求,并且setup.cfg
个文件。
pip 19.0实现了PEP 517,以允许项目通过pyproject.toml
指定构建后端。
setuptools
有一个未解决的问题,标题为“ Merge setup.cfg spec with pyproject.toml one and deprecate setup.py and setup.cfg”。但是,setuptools
个人还没有决定。 open discussion关于如何进行。
免责声明:我本人对Python的打包丛林深感迷茫。