热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

python,通,过从,标准,库,中,删除,dead,ba

由 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 的范围。”


推荐阅读
  • Python 程序转换为 EXE 文件:详细解析 .py 脚本打包成独立可执行文件的方法与技巧
    在开发了几个简单的爬虫 Python 程序后,我决定将其封装成独立的可执行文件以便于分发和使用。为了实现这一目标,首先需要解决的是如何将 Python 脚本转换为 EXE 文件。在这个过程中,我选择了 Qt 作为 GUI 框架,因为之前对此并不熟悉,希望通过这个项目进一步学习和掌握 Qt 的基本用法。本文将详细介绍从 .py 脚本到 EXE 文件的整个过程,包括所需工具、具体步骤以及常见问题的解决方案。 ... [详细]
  • 利用树莓派畅享落网电台音乐体验
    最近重新拾起了闲置已久的树莓派,这台小巧的开发板已经沉寂了半年多。上个月闲暇时间较多,我决定将其重新启用。恰逢落网电台进行了改版,回忆起之前在树莓派论坛上看到有人用它来播放豆瓣音乐,便萌生了同样的想法。通过一番调试,终于实现了在树莓派上流畅播放落网电台音乐的功能,带来了全新的音乐享受体验。 ... [详细]
  • 掌握PHP编程必备知识与技巧——全面教程在当今的PHP开发中,了解并运用最新的技术和最佳实践至关重要。本教程将详细介绍PHP编程的核心知识与实用技巧。首先,确保你正在使用PHP 5.3或更高版本,最好是最新版本,以充分利用其性能优化和新特性。此外,我们还将探讨代码结构、安全性和性能优化等方面的内容,帮助你成为一名更高效的PHP开发者。 ... [详细]
  • 在List和Set集合中存储Object类型的数据元素 ... [详细]
  • 使用 ListView 浏览安卓系统中的回收站文件 ... [详细]
  • 在 CentOS 7 系统中安装 Scrapy 时遇到了一些挑战。尽管 Scrapy 在 Ubuntu 上安装简便,但在 CentOS 7 上需要额外的配置和步骤。本文总结了常见问题及其解决方案,帮助用户顺利安装并使用 Scrapy 进行网络爬虫开发。 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • 在探讨Hibernate框架的高级特性时,缓存机制和懒加载策略是提升数据操作效率的关键要素。缓存策略能够显著减少数据库访问次数,从而提高应用性能,特别是在处理频繁访问的数据时。Hibernate提供了多层次的缓存支持,包括一级缓存和二级缓存,以满足不同场景下的需求。懒加载策略则通过按需加载关联对象,进一步优化了资源利用和响应时间。本文将深入分析这些机制的实现原理及其最佳实践。 ... [详细]
  • 本文详细介绍了使用 Python 进行 MySQL 和 Redis 数据库操作的实战技巧。首先,针对 MySQL 数据库,通过 `pymysql` 模块展示了如何连接和操作数据库,包括建立连接、执行查询和更新等常见操作。接着,文章深入探讨了 Redis 的基本命令和高级功能,如键值存储、列表操作和事务处理。此外,还提供了多个实际案例,帮助读者更好地理解和应用这些技术。 ... [详细]
  • Netty框架中运用Protobuf实现高效通信协议
    在Netty框架中,通过引入Protobuf来实现高效的通信协议。为了使用Protobuf,需要先准备好环境,包括下载并安装Protobuf的代码生成器`protoc`以及相应的源码包。具体资源可从官方下载页面获取,确保版本兼容性以充分发挥其性能优势。此外,配置好开发环境后,可以通过定义`.proto`文件来自动生成Java类,从而简化数据序列化和反序列化的操作,提高通信效率。 ... [详细]
  • 基于 Bottle 框架构建的幽默应用 —— Python 实践 ... [详细]
  • 在Windows环境下离线安装PyTorch GPU版时,首先需确认系统配置,例如本文作者使用的是Win8、CUDA 8.0和Python 3.6.5。用户应根据自身Python和CUDA版本,在PyTorch官网查找并下载相应的.whl文件。此外,建议检查系统环境变量设置,确保CUDA路径正确配置,以避免安装过程中可能出现的兼容性问题。 ... [详细]
  • 如何在Python中高效运用requests模块:详细使用指南与技巧分享
    在Python中,`requests`模块是处理URL请求的强大工具,作为一个第三方库,需要单独安装。本文将详细介绍如何高效地使用`requests`模块,涵盖从基础功能到高级技巧的各个方面,帮助开发者更好地掌握其应用方法,提高开发效率和代码质量。 ... [详细]
  • 如何在 Node.js 环境中将 CSV 数据转换为标准的 JSON 文件格式? ... [详细]
  • PyTorch 使用问题:解决导入 torch 后 torch.cuda.is_available() 返回 False 的方法
    在配置 PyTorch 时,遇到 `torch.cuda.is_available()` 返回 `False` 的问题。本文总结了多种解决方案,并分享了个人在 PyCharm、Python 和 Anaconda3 环境下成功配置 CUDA 的经验,以帮助读者避免常见错误并顺利使用 GPU 加速。 ... [详细]
author-avatar
许昆贞5564
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有