Python 通过从标准库中删除“dead batteries”提案

开发
由 Python 贡献者 Christian Heimes 和 Brett Cannon 提出的一项,从 Python 标准库中删除过时的和未维护的模块的 Python Enhancement Proposal (PEP) 594 已被批准通过。

由 Python 贡献者 Christian Heimes 和 Brett Cannon 提出的一项,从 Python 标准库中删除过时的和未维护的模块的 Python Enhancement Proposal (PEP) 594 已被批准通过。该提案最初于 2019 年提交,但直到近日才(3 月 11 日)被批准用于 Python 3.11。有了这个 PEP,Python 3.11 会将某些模块标记为已弃用,Python 3.12 将是最后一个版本包括这些模块。在 Python 3.13 中,不推荐使用的模块将被完全删除。

此 PEP 提出了一个要从标准库中删除的标准库模块清单。这些模块大多是历史数据格式(例如 Commodore 和 SUN 文件格式)、API 和早已被取代的操作系统(例如 Mac OS 9),或者具有安全隐患和更好替代方案(例如密码和登录)的模块。

一直以来,Python 都有着“batteries included”的理念;其目标是提供一个通用的标准库来处理许多常见的开发任务,用户不必为了编写简单的 Web 服务器或解析电子邮件而弄清楚如何下载和安装单独的包。

但随着时代的变迁,PyPI(née Cheeseshop)、setuptools 和 pip 的引入,下载和安装包变得简单直接。Python 如今也拥有了丰富而充满活力的第三方包生态系统。另一方面,Python 的标准库堆满了杂乱无章的、不必要的功能重复和可有可无的特性。基于此,官方认为:

任何额外的模块都会增加 Python 核心开发团队的维护成本。团队资源有限,减少的维护成本可以腾出开发时间用于其他改进。

标准库中的模块通常受到青睐,并被视为问题的实际解决方案。大多数用户只有在有令人信服的理由时才会选择第三方模块来替换 stdlib 模块,例如, 用lxml替代xml。删除未维护的 stdlib 模块增加了社区贡献的模块被广泛使用的机会。

一个精简的标准库有利于资源有限的平台,例如只有几百 KB 存储空间的设备(如 BBC Micro:bit)。BeeWare 或 WebAssembly(如 pyodide)等移动平台上的 Python 也因下载量减少而受益。

此 PEP 中被弃用的模块要么是因为它们的移除是最没有争议的,要么是最有益的。例如,争议最小的有 30 年前的多媒体格式,如 sunau 音频格式,在 80 年代末期被用于 SPARC 和 NeXT 工作站。crypt模块具有根本缺陷,可以在标准库之外更好地解决。

此外,该 PEP 也指定了一些模块为未计划删除的模块。有些模块已经被废弃了几个版本,或者乍一看没有必要。然而,将这些模块保留在标准库中是有好处的,这主要是针对那些不能从 PyPI 安装软件包的环境;包括 ftplib、optparse、 getopt 以及 wave 模块。

CPython 核心开发人员 Gregory P. Smith 在批准 PEP 的讨论线程中表示,PEP-594 从 Python 标准库中删除了一组没有争议的、非常老的、没有维护的或过时的库。Python 指导委员会希望这个 PEP 是个一次性事件,而未来的废弃将以不同的方式处理。

“解决围绕我们如何长期定义 stdlib 的持续讨论并不妨碍这个 PEP。对我们来说,每隔几个版本就对 stdlib 的内容进行一次定期审查似乎是值得的,这样我们就可以避免积累这么多的 dead batteries,但这超出了这个特定 PEP 的范围。”

本文转自OSCHINA

本文标题:Python 通过从标准库中删除“dead batteries”提案

本文地址:https://www.oschina.net/news/186855/python-removes-dead-batteries-from-stdlib

责任编辑:未丽燕 来源: 开源中国
相关推荐

2022-05-18 09:42:29

PythonGILGross

2010-02-03 11:26:28

2020-09-25 12:48:53

腾讯云区块链ITU

2020-09-20 21:07:26

GitHub代码 C++

2021-07-21 17:19:03

Fedora 35软件包更新

2012-07-18 20:48:58

Python

2020-07-11 17:17:29

腾讯视频

2019-06-03 10:50:03

Python 开发编程语言

2017-04-24 13:31:11

专利5G通信

2010-02-24 14:47:05

2023-09-05 08:40:57

删除数据库Oracle

2021-10-30 18:59:15

Python

2010-03-26 13:39:28

Python标准库

2023-12-22 08:13:39

业务review流程

2013-12-12 16:59:15

Lua表处理

2021-10-07 09:04:49

Collections数据结构

2014-01-14 09:10:53

GoHTTP内存泄漏

2013-12-03 17:28:56

Lua脚本语言

2012-04-16 15:26:17

Blue Coat通用标准

2010-05-21 10:01:11

MySQL数据库
点赞
收藏

51CTO技术栈公众号