Python 2.7 将于 2020 年 1 月 1 日正式停止支持。在此日期之后计划进行一次最终错误修复,但之后就结束了。
生命周期终点 (EOL) 对你意味着什么?如果你运行的是 Python 2,则需要迁移。
谁决定终止 Python 2 的生命周期?
在 2012 年,维护 Python 编程语言的团队审查了他们的选项。当时存在两个日益不同的代码库,Python 2 和 Python 3。两者都很流行,但较新版本未被广泛采用。
除了 Python 3 通过完全重新设计 Unicode 支持来颠覆数据处理的底层方式之外,主要版本更改允许一次性进行不向后兼容的更改。此决定记录在 2006 年。为了缓解中断,Python 2 继续得到维护,并反向移植了一些功能。为了进一步帮助社区转型,EOL 日期从 2015 年延长至 2020 年,又延长了五年。
维护不同的代码库是团队知道必须解决的麻烦。最终,一项决定被宣布
“我们是志愿者,负责创建和维护 Python 编程语言。我们已决定 2020 年 1 月 1 日将是我们终止 Python 2 的日子。这意味着在那一天之后,即使有人在其中发现安全问题,我们也不会再对其进行改进。你应该尽快升级到 Python 3。”
CPython 核心开发者和 Python 指导委员会现任成员 Nick Coghlan 在他的博客中添加了更多信息。由 Barry Warsaw(也是 Python 指导委员会成员)撰写的 PEP 404 详细说明了为什么永远不会有 Python 2.8。
是否还有人支持 Python 2?
提供商和供应商对 Python 2 的支持将有所不同。Google Cloud 已宣布其计划如何在未来支持 Python 2。Red Hat 也宣布了 Red Hat Enterprise Linux (RHEL) 的计划,AWS 也宣布了 AWS 命令行界面和 SDK 的次要版本更新要求。
你还可以阅读 Stack Overflow 博客文章“为什么迁移到 Python 3 需要这么长时间?”,作者是 Vicki Boykis,她在文章中指出了 Python 3 采用缓慢的三个原因。
使用 Python 3 的理由
无论持续支持如何,尽快迁移到 Python 3 都是一个非常好的主意。Python 3 将继续得到支持,并且它具有 Python 2 所没有的一些非常棒的功能。
最近发布的 Python 3.8 包括诸如 功能,例如 海象运算符、仅位置参数和 自文档化 f 字符串。早期版本的 Python 3 引入了 功能,例如 asyncio、f 字符串、类型提示和 pathlib,仅举几例。
下载次数最多的前 360 个软件包 已经迁移到 Python 3。你可以使用 caniusepython3 软件包检查你的 requirements.txt 文件,以查看你依赖的任何软件包是否尚未迁移。
将 Python 2 移植到 Python 3 的资源
有许多资源可用于简化你迁移到 Python 3 的过程。例如,《将 Python 2 移植到 Python 3 指南》列出了一系列工具和技巧,可帮助你实现单源 Python 2/3 兼容性。Python3statement.org 上也有一些有用的技巧。
Dustin Ingram 和 Chris Wilcox 在 Cloud Next '19 上做了一个演示,详细介绍了过渡到 Python 3 的一些动机和迁移模式。Trey Hunner 在 PyCon 2018 上做了一个演示,介绍了 Python 3 最有用的功能,以鼓励你迁移,以便你可以利用它们。
加入我们!
2020 年 1 月 1 日现在只有几周的时间了。如果你需要每天提醒自己还有多长时间(并且你使用 Twitter),请关注 Python 2 终止倒计时 Twitter 机器人。
5 条评论