Python 通過從標準庫中刪除“dead batteries”提案
由 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 的范圍?!?/p>
本文轉自OSCHINA
本文標題:Python 通過從標準庫中刪除“dead batteries”提案
本文地址:https://www.oschina.net/news/186855/python-removes-dead-batteries-from-stdlib