使用 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 项目根目录,我想它大概是长这样的
notion image
一眼看上去全是配置文件就一个感觉 —— 杂乱。
杂乱带来的最大坏处:管理困难 —— 各种配置的文件类型、配置语法并不统一,对任何刚接入项目的人都有较高学习成本。
所以,类似 NodeJS 的 package.json ,Python 世界的统一项目配置文件 —— pyproject.toml 就显得异常重要了。

Why toml ?

一个比较大的疑问,为什么要选择用 toml 这种使用面并不算广泛的文件格式?
由于长期浸淫在 k8s 里,我第一反应觉得是 yaml 更合适,毕竟表达能力更强。但待我仔细阅读了 PEP 里的相关比较,发现 toml 的选型反而是正确的。
 
首先,要搞清楚 pyproject.toml 的使用场景,它是配置的集合,而不是业务逻辑对象,过于复杂的配置反而不利于其发展,毕竟工具配置都是开发的“边角料时间”处理的,不能有太复杂的理解门槛。
 
PEP 里阐述的 yaml 作为项目配置文件的缺点:
  • 过于复杂灵活,可能会导致不同解析器不能互相解析
  • 本身不够安全,而能解决该问题的 PyYAML 依赖过重

主流工具支持

 

好孩子

 
详见:
 

坏孩子

 

flake8

作者不愿意支持,看起来是强迫症不够强烈
 
 
notion image
 
好在,还是有其他强迫着患者存在,外挂实现了 flake9 ,专门支持了 pyproject.toml

mypy

 
notion image
 
”仁慈的独裁者“并不支持,所以目前只能留着 mypy.ini 这一根独苗了。
 
一枝独秀
一枝独秀
 

© bluesyu 2019 - 2023

powered by nobelium