前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用 pyproject.toml 管理你的 Python 项目

使用 pyproject.toml 管理你的 Python 项目

作者头像
布鲁斯鱼
发布2022-11-02 14:05:44
4.4K0
发布2022-11-02 14:05:44
举报
文章被收录于专栏:布鲁斯鱼的妙想天开

Simple better than complex

Why pyproject.toml ?

Why toml ?

主流工具支持

好孩子

坏孩子

flake8

mypy

Why pyproject.toml ?

如果你还没有听说过 pyproject.toml ,那么请看一眼最近主力开发的 Python 项目根目录,我想它大概是长这样的

notion image
notion image

一眼看上去全是配置文件就一个感觉 —— 杂乱。

杂乱带来的最大坏处:管理困难 —— 各种配置的文件类型、配置语法并不统一,对任何刚接入项目的人都有较高学习成本。

所以,类似 NodeJS 的 package.json ,Python 世界的统一项目配置文件 —— pyproject.toml 就显得异常重要了。

Why toml ?

一个比较大的疑问,为什么要选择用 toml 这种使用面并不算广泛的文件格式?

由于长期浸淫在 k8s 里,我第一反应觉得是 yaml 更合适,毕竟表达能力更强。但待我仔细阅读了 PEP 里的相关比较,发现 toml 的选型反而是正确的。

首先,要搞清楚 pyproject.toml 的使用场景,它是配置的集合,而不是业务逻辑对象,过于复杂的配置反而不利于其发展,毕竟工具配置都是开发的“边角料时间”处理的,不能有太复杂的理解门槛。

PEP 里阐述的 yaml 作为项目配置文件的缺点:

  • 过于复杂灵活,可能会导致不同解析器不能互相解析
  • 本身不够安全,而能解决该问题的 PyYAML 依赖过重

主流工具支持

好孩子

详见:

carlosperate/awesome-pyproject

An Awesome List of projects using the pyproject.toml Python configuration file. - carlosperate/awesome-pyproject

carlosperate/awesome-pyproject
carlosperate/awesome-pyproject

https://github.com/carlosperate/awesome-pyproject

carlosperate/awesome-pyproject
carlosperate/awesome-pyproject

坏孩子

flake8

作者不愿意支持,看起来是强迫症不够强烈

notion image
notion image

好在,还是有其他强迫着患者存在,外挂实现了 flake9 ,专门支持了 pyproject.toml

mypy
notion image
notion image

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

一枝独秀
一枝独秀

一枝独秀

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020 年 11 月,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Why pyproject.toml ?
  • Why toml ?
  • 主流工具支持
    • 好孩子
      • 坏孩子
        • flake8
        • mypy
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档