終于,Python 標準庫要做“瘦身手術”了!
↑?關注 + 星標?,每天學Python新技能
后臺回復【大禮包】送你Python自學大禮包
本文由?Python?貓?整理
Python 社區(qū)有一個比較獨特的概念是“內(nèi)置電池”(Batteries Included),指的是 Python 自帶豐富多樣的標準庫,開箱即用,動力十足。根據(jù)官方文檔顯示,Python 內(nèi)置了 200 多個標準庫,它們對于 Python 的流行功不可沒。
但是,Python 已經(jīng)發(fā)展了 30 年,很多標準庫已經(jīng)過時了,已經(jīng)在“漏電”了,這對于語言的發(fā)展來說,并不是一件好事。
在 2019 年的官方 PyCon 大會后,PEP-594 被提了出來,旨在為標準庫動一次“手術”,剔除掉質量差、功能落后、代碼過時的標準庫,讓 Python 保持輕量高效,持續(xù)煥發(fā)生機活力。
當時,貓哥得知了這一消息,興致沖沖地寫了一篇文章《聊聊 Python 的內(nèi)置電池》(點擊閱讀),向廣大 Python 開發(fā)者傳達了這一個好消息。
當時,PEP-594 正處于草案狀態(tài),沒想到一晃就是三年,如今這個 PEP 終于是被接受了!
從 3.11 版本到 3.13 版本,Python 內(nèi)置電池的“瘦身手術”將會進行。
讓我們祝愿它變得越來越好,越來越健康!
---以下是 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 提出了一個要從標準庫中刪除的標準庫模塊清單。這些模塊大多是歷史數(shù)據(jù)格式(例如 Commodore 和 SUN 文件格式)、API 和早已被取代的操作系統(tǒng)(例如 Mac OS 9),或者具有安全隱患和更好替代方案(例如密碼和登錄)的模塊。
一直以來,Python 都有著“batteries included”的理念;其目標是提供一個通用的標準庫來處理許多常見的開發(fā)任務,用戶不必為了編寫簡單的 Web 服務器或解析電子郵件而弄清楚如何下載和安裝單獨的包。
但隨著時代的變遷,PyPI(née Cheeseshop)、setuptools 和 pip 的引入,下載和安裝包變得簡單直接。Python 如今也擁有了豐富而充滿活力的第三方包生態(tài)系統(tǒng)。另一方面,Python 的標準庫堆滿了雜亂無章的、不必要的功能重復和可有可無的特性。
基于此,官方認為:
任何額外的模塊都會增加 Python 核心開發(fā)團隊的維護成本。團隊資源有限,減少的維護成本可以騰出開發(fā)時間用于其他改進。 標準庫中的模塊通常受到青睞,并被視為問題的實際解決方案。大多數(shù)用戶只有在有令人信服的理由時才會選擇第三方模塊來替換 stdlib 模塊,例如, 用 lxml替代xml。刪除未維護的 stdlib 模塊增加了社區(qū)貢獻的模塊被廣泛使用的機會。一個精簡的標準庫有利于資源有限的平臺,例如只有幾百 KB 存儲空間的設備(如 BBC Micro:bit)。BeeWare 或 WebAssembly(如 pyodide)等移動平臺上的 Python 也因下載量減少而受益。
此 PEP 中被棄用的模塊要么是因為它們的移除是最沒有爭議的,要么是最有益的。例如,爭議最小的有 30 年前的多媒體格式,如 sunau 音頻格式,在 80 年代末期被用于 SPARC 和 NeXT 工作站。crypt模塊具有根本缺陷,可以在標準庫之外更好地解決。
此外,該 PEP 也指定了一些模塊為未計劃刪除的模塊。有些模塊已經(jīng)被廢棄了幾個版本,或者乍一看沒有必要。然而,將這些模塊保留在標準庫中是有好處的,這主要是針對那些不能從 PyPI 安裝軟件包的環(huán)境;包括 ftplib、optparse、 getopt 以及 wave 模塊。
CPython 核心開發(fā)人員 Gregory P. Smith 在批準 PEP 的討論組中表示,PEP-594 從 Python 標準庫中刪除了一系列沒有爭議的、非常老的、沒有維護的或過時的庫。Python 指導委員會希望這個 PEP 是個一次性事件,而未來的廢棄將以不同的方式處理。


