计划对 Python 标准库进行重大清理

Python 项目开发人员 发表 建议(PEP 594)对标准库进行重大清理。 明显过时且高度专业化的功能和组件存在架构问题且无法在所有平台上统一,都将从 Python 标准库中删除。

例如,建议从标准库中排除诸如 crypt(Windows 不可用以及哈希算法的可用性依赖于系统库)、cgi(不是最佳架构,需要为每个请求启动新进程)、imp 等模块。 (建议使用importlib)、pipes(建议使用subprocess模块​​)、nis(建议使用NSS、LDAP或Kerberos/GSSAPI)、spwd(不建议直接使用账户数据库)。 binhex、uu、xdrlib 模块也被标记为删除。
国际金融中心,
音频操作,

伊姆赫德,
奥萨音频德夫,
sndhdr,
苏瑙
异步聊天,
异步,
中国国际贸易信息数据库,
邮件发送
nntplib、macpath、
格式化程序、msilib 和解析器。

提议的计划是在 Python 3.8 中弃用上述模块,在 Python 3.8 中发出警告,并在 Python 3.10 中从 CPython 存储库中删除它们。
解析器模块计划在 3.9 版本中删除,因为它在 Python 2.5 版本中已被弃用,而 macpath 模块则在 3.8 分支中被删除。 从主代码中删除后,代码将被移动到一个单独的legacylib存储库,其命运将取决于社区成员的兴趣。 Python 3.9 分支预计支持到 2026 年,这将为项目迁移到外部替代品提供充足的时间。

最初,还建议删除 ftplib、optparse、getopt、colorsys、fileinput、lib2to3 和 wave 模块,但目前决定将它们保留为标准库的一部分,因为尽管它们存在,但它们仍然广泛且相关。更高级的替代方案或与操作系统特定功能的绑定。

回想一下,Python 项目最初采用了“自带电池”的方法,在标准库中为各种应用程序提供了丰富的函数集。 这种方法的优点之一是简化了 Python 项目的维护和项目中使用的模块的安全性监控。 模块中的漏洞通常会成为使用它们的应用程序中的漏洞来源。 如果函数包含在标准库中,则足以控制主项目的状态。 在拆分标准库时,开发者需要使用第三方模块,并且必须单独监控每个模块的漏洞。 由于高度碎片化和大量依赖关系,存在通过损害模块开发人员的基础设施而受到攻击的威胁。

另一方面,标准库中的每个附加模块都需要Python开发团队的资源来维护。 库中积累了大量重复、冗余的功能,消除这些功能可以降低维护成本。 随着目录的发展 的PyPI 并简化了安装和下载附加软件包的过程,外部模块的使用现在已经变得和内置功能一样普遍。

越来越多的开发人员正在使用功能更多的外部替代标准模块,例如使用 lxml 模块代替 xml。 从标准库中删除废弃的模块将增加社区积极开发的替代品的受欢迎程度。 此外,减少标准库将导致基础发行版大小的减小,这在存储大小有限的嵌入式平台上使用Python时非常重要。

来源: opennet.ru

添加评论