使用 pyproject.toml 管理你的 Python 项目
date
Nov 30, 2020
slug
use-pyprojects-toml-as-project-tool.html
status
Published
tags
python
pep
tech
summary
就差 mypy 了,求龟叔可怜一下强迫症患者
type
Post
Simple better than complex
Why pyproject.toml
?
如果你还没有听说过
pyproject.toml
,那么请看一眼最近主力开发的 Python 项目根目录,我想它大概是长这样的一眼看上去全是配置文件就一个感觉 —— 杂乱。
杂乱带来的最大坏处:管理困难 —— 各种配置的文件类型、配置语法并不统一,对任何刚接入项目的人都有较高学习成本。
所以,类似 NodeJS 的
package.json
,Python 世界的统一项目配置文件 —— pyproject.toml
就显得异常重要了。Why toml ?
一个比较大的疑问,为什么要选择用
toml
这种使用面并不算广泛的文件格式?首先,要搞清楚
pyproject.toml
的使用场景,它是配置的集合,而不是业务逻辑对象,过于复杂的配置反而不利于其发展,毕竟工具配置都是开发的“边角料时间”处理的,不能有太复杂的理解门槛。PEP 里阐述的
yaml
作为项目配置文件的缺点:- 过于复杂灵活,可能会导致不同解析器不能互相解析
- 本身不够安全,而能解决该问题的 PyYAML 依赖过重
主流工具支持
好孩子
详见:
坏孩子
flake8
作者不愿意支持,看起来是强迫症不够强烈
好在,还是有其他强迫着患者存在,外挂实现了
flake9
,专门支持了 pyproject.toml
。mypy
”仁慈的独裁者“并不支持,所以目前只能留着
mypy.ini
这一根独苗了。