tor*_*gen 8 python distutils setuptools python-3.x python-packaging
对我来说,这还不是很清楚setup.cfg。我正在寻找有关PEP 508环境标志物的其他问题的解决方案,这让我感到非常困惑。
在我看来,这setup.cfg是对的改进setup.py,因为它是声明性的,不涉及运行任意代码以使程序包可安装,使分发恶意Python程序包更加困难,使运行Python程序包注册表更容易。
因此,在setuptools文档中这里提到了setuptools在30.3.0 (8 Dec 2016)版本中对setup.cfg的支持,这是最近的。所以,这必须是新事物,对吗?
不完全的。至少从2.6开始就有很长一段时间的distutils支持setup.cfg。已经9年了。
同时,在这里的wheel文档中,据说setup.cfg现在已弃用,最好通过extras_require参数提供环境标记。而且它提到了setuptools,因此它与可能不赞成使用的distutils风格无关setup.cfg。
那么,实际上是怎么回事?是setup.cfg不赞成使用,还是最新的处理方式?
AXO*_*AXO 11
我想就最近的发展补充几点说明:
PEP 518仍处于临时状态,但我将其解释为邀请才能使用pyproject.toml,而不是setup.cfg。引自 PEP:
setup.cfgsetuptools 将其用作通用格式存在两个问题。一是它们是.ini存在上面configparser讨论中提到的问题的文件。另一个原因是该文件的架构从未被严格定义过,因此不知道哪种格式可以安全使用而不会混淆 setuptools 安装。
来自black 的文档:
PEP 518定义
pyproject.toml为一个配置文件,用于存储 Python 项目的构建系统要求。随着类似工具的帮助下 诗歌或无声无息,它完全可以取代的需要setup.py和setup.cfg文件。
pip 19.0实现了PEP 517以允许项目通过pyproject.toml.
setuptools有一个标题为“将setup.cfg 规范与 pyproject.toml 合并并弃用 setup.py 和 setup.cfg ”的未决问题。然而,setuptools伙计们还没有就此做出决定。有一个关于如何进行的公开讨论。
免责声明:我自己完全迷失在 Python 的包装丛林中。
不,setup.cfg它并没有被弃用,而且您提到的文档具有误导性。
有一些严重的原因,比如安全性,与需要执行的事实有关setup.py,这也是放弃它的主要原因。
这是临时演员的肮脏伎俩:
[options.extras_require]
pdf = ReportLab>=1.2; RXP
rest = docutils>=0.3; pack ==1.1, ==1.3
Run Code Online (Sandbox Code Playgroud)