Python 2 EOL:如何在Python 2结束后生存

从2020年1月1日起,其创建者Python软件基金会不再支持Python编程语言的2.x分支。 这个日期标志着已经延续了多年的戏剧的高潮–从较旧的,性能欠佳的,使用广泛的Python版本过渡到了较新的,更强大的版本,其使用率仍落后于它的前身。

是时候了 Python 3相对于Python 2拥有无数的技术和最终用户增强功能,永远无法取代Python2。永久存在于PyPI存储库中的绝大多数流行软件包都是可重复使用的Python代码的第一站, 支持Python 3 。 Python 3已成为许多Linux发行版的默认Python解释器。 而且最近出版的所有书籍,编码学院和在线教程都为初学者推荐Python 3。

[ 同样在InfoWorld上:3个主要的Python缺陷-及其解决方案 ]

现在是坏消息。 像Windows 7(或Windows XP!)一样的Python 2,将在未来数年与我们同在。 由于内部限制,我们中的许多人将继续依赖用Python 2编写的应用程序。我们中的某些人甚至将继续使用Python 2来开发新应用程序。 如果您在快速成为Python 3的世界中被Python 2所束缚,该怎么办? 让我们看一下选项。

Python 2生命终结:这意味着什么

关于Python 2即将停产(寿命终止)的第一件事也是最重要的一点: Python 2应用程序仍将运行。 不要认为这是千年虫问题,到2020年1月1日,Python 2应用程序都将不可思议地停止运行。核心Python开发团队将不再对Python 2提供正式支持

这是Python 2 EOL的实际含义:

  • Python 2的官方错误修复和安全补丁将停止。 核心开发团队不会修复Python 2解释器或Python 2标准库中新发现的问题。 但是,商业供应商可以自己维护Python 2,而其他第三方则可以派生Python 2代码库,并继续进行核心团队的工作。 (稍后对此有更多介绍。)
  • 第三方Python项目将放弃Python2。同时支持Python 2和Python 3的库将开始将其资源专门用于Python 3。 这些项目中有许多是由志愿者运行的,仅支持一种语言版本的工作就少得多。 每个项目都将决定对Python 2的支持,但是许多大型Python项目都承诺到2020年完全放弃对Python 2的支持。
  • 对Python 2的平台支持将会减弱。 Linux发行版和云服务提供商可能会继续包括Python 2运行时。 但是,随着时间的流逝,对Python 2的支持会变得越来越少。 几乎可以肯定,仍然可以在云平台上运行Python 2的容器化版本,但是不能保证云服务提供商将继续维护自己的Python 2容器。

如果您对Python 2应用程序感到困惑,那么在缺少Python 2支持的情况下应该如何处理? 从长远来看,最好的办法是找到一种策略来删除您对Python 2的所有依赖。但这只是众多选择中的第一个。

从Python 2过渡

取决于代码库的大小和外部依赖关系,为Python 3保留Python 2可能比您预期的要容易。 Python的官方文档提供了一些简单的步骤,您可以采用这些步骤来确定项目是否“面向未来”,即,几乎不需要调整就可以在Python 3中使用。 您可以采取的最好的第一步就是使用caniusepython3软件包来确定哪些组件或依赖项(如果有)会阻止迁移。

如果由于应用程序的特定组件只能在Python 2上运行而对Python 2感到困惑,请先从该组件过渡过来。 查看是否存在与Python 3兼容的替代方法,然后从该点向外重建应用程序。 这个想法是寻找对Python 2依赖的最小地方,并加以解决。

如果必须以某种形式保留在Python 2上,那么您至少可以做的就是从迁移到最新版本的Python 2(在撰写本文时为Python 2.7.16)开始,并将其用作Python 3的出发点。这样一来,您将受益于Python 2.7正式寿命结束前将提供的bug修复。

使用备用Python 2运行时

如果更改Python 2代码库不可行,则另一种选择是使用由第三方开发的不同的Python 2运行时。 替代的Python 2运行时可能具有比Python 2本身更长的支持窗口。

塔松

根据该项目的自述文件, Tauthon是Python 2.7.18的一个分支,“具有从Python 3.x向后移植的新语法,内置函数和库”。 只要维护者可以提供,Tauthon还包括该语言的修复程序和补丁。 从理论上讲,Tauthon应该可以替代Python 2.7。 截至撰写本文时,最新版本Tauthon 2.8.2包括函数注释,仅关键字参数, async/await语法以及以前仅在Python 3中可用的其他功能。

y

PyPy是Python的即时加速运行时,它使用Python 2作为其内部基础结构的关键部分,并且长期以来一直支持Python 2作为其主要版本。 该项目的文档声称: “由于RPython [PyPy的基础]建立在Python 2之上,并且极不可能更改,因此PyPy的Python 2版本将永远存在,即只要PyPy本身就是周围。” 尽管PyPy的开发团队不断努力解决这些问题,但PyPy可能会与某些依赖C扩展的Python软件包产生兼容性或性能问题。

铁蟒

IronPython是.Net运行时的Python实现,其Python 2版本仍在获得积极的支持。 其目前的开发人员名单已宣布,他们不太可能在2020年后支持Python 2,而更好地专注于IronPython3。 但是,这并不意味着其他人不能独自继续提供这种支持。

赛顿

尽管也有有限的支持窗口,但另一种可能是Cython 。 Cython使用可选的类型将Python编译为C,以增强性能,并且自诞生以来就一直支持Python 2。 可以使用Cython将Python 2代码转换为C,以继续用作“冻结”二进制文件。 通过这样做,您甚至可以提高性能,具体取决于应用程序的性质。 (主要受I / O约束的程序不会有太大改善。)

但是,Cython计划在今年年底放弃对Python 2的支持。 这并不意味着Python 2程序不再可以编译为Cython,而仅需要使用Python 3编译使用Python 2语法的Cython代码。

从供应商处购买扩展的Python 2支持

一种长期的解决方案是从Python解决方案供应商那里获得支持。 ActiveState是ActivePython发行版和Komodo IDE的创建者,它为希望使用Python 2或希望迁移到Python 3的客户提供商业支持 ,方法是确定其Python堆栈中必须用Python 3重写的部分。

一些供应商在另一种受支持产品中提供了对Python 2的支持。 红帽企业Linux版本6和7包括Python 2,因此从红帽购买的针对那些操作系统版本的任何支持合同都将包括在产品的整个使用期限内对Python 2的持续支持。

如果您通过云服务使用Python 2,则该服务可能会继续以自己的方式支持Python 2。 例如,AWS 表示将在2020年12月31日之前为其Python 2.7运行时提供安全补丁,尽管这不适用于任何第三方Python 2.7软件包。

第三种选择是从咨询公司或承包商那里购买支持。 他们提供给您的支持水平会根据您的需求和抱负而有所不同。 它可能包括提出一个脱离Python 2的过渡计划,并重写任何相关软件(可能是最好的长期策略),或者手动将Python 2的补丁合并到运行时的自定义版本中(雄心勃勃且复杂) )。

自己维护Python 2

Python是一个开源项目。 没有什么可以阻止您自己实施任何所需的修复程序。 如果修复程序是对Python标准库的更改,那么通常并不太难,因为大多数Python标准库本身都是用Python编写的。 但是,如果您需要在标准库或CPython解释器中更改Python使用的C模块,则更具挑战性。 您需要了解C并熟悉CPython的内部知识才能完成此工作。

没做什么

如果没有损坏,请不要修复。 当这些操作系统报废时,这就是许多企业在Windows NT和Windows 2000中使用的策略。 从理论上讲,仅供内部使用且未公开到公共Internet的Python应用程序可以无限期运行。

虚拟机和容器化提供了在受控环境中保持此类应用程序正常运行的方法。 您可以将给定版本的Python 2运行时及其标准库,应用程序所需的模块以及应用程序本身“冻结”到容器映像或VM中。

也就是说,任何旧版应用程序,即使是没有外部风险的应用程序,都应定期进行重新评估。 在每种情况下,对于Python 2用户而言,最佳的长期策略是迁移到Python3。Python2一直以来都非常出色。

进一步了解Python

From: https://www.infoworld.com/article/3365221/python-2-end-of-life-how-to-survive-the-end-of-python-2.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值