首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python2 要嗝屁了,怎么办?

Python2要完怎么办?

在线等,挺急的

在2020年1月1日,Python的2.x版本将不再受到其开发商Python软件基金会的支持。

一场多年以来新旧交替的好戏的高潮部分也即将上演:

从旧的,功能较少但用的人多的Python版本过渡到更新,更强大但用的人还不多的版本。

这场过渡有好消息也有坏消息。

好消息是Python 3相比Python 2做了许多技术和用户体验上的革新,是时候永久取代Python 2。

绝大多数托管在PyPI存储库中流行的软件包都支持Python 3,Python 3也已成为许多Linux发行版的默认Python解释器。

大多数最近出版的书籍,代码课程和在线教程都为初学者推荐了Python 3。

坏消息是Python 2就像Windows 7或者Windows XP,未来几年之内你总能看得到它。

许多人会继续依赖于使用Python 2编写的应用。

甚至由于一些内部限制,有些人还会继续将用Python 2写新程序。

这天下都要变成Python 3的天下,我Python 2要完,该怎么办?

Python 2生命周期结束意味着什么?

关于Python 2要完,首先明确非常重要的一点:

Python 2程序仍将运行。

这不是一个千年虫问题,Python 2程序也不会在2020年1月1日全部神奇地停止运行。

Python 2生命周期的结束意味着核心Python开发团队将不再对Python 2进行官方支持。

那实际会发生什么呢?

Python 2的官方错误修复和安全补丁将停止更新。

核心开发团队将不会修复Python 2解释器或Python 2标准库中新发现的问题。

但是企业供应商仍可以自行维护Python 2,其他第三方可以fork Python 2的代码库并在核心团队撂挑子的地方继续前进。

第三方Python项目将放弃Python 2。

支持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的官方文档有一些简单的步骤,你可以采取这些步骤来确定你的项目是否能“面向未来”——可以直接在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本身还要长。

Tauthon

根据该项目的描述,Tauthon是Python 2.7.16的一个分支,有新的语法,内置函数和从Python 3.x向前移植的库,维护者会持续提供修复和补丁。

理论上Tauthon可以作为Python 2.7的替代品,截至本文发稿前,最新版本Tauthon 2.8包括函数注释,关键字参数,async / await语法以及以前仅在Python 3中提供的其他功能。

PyPy

PyPy是Python的即时加速运行环境,它在关键部分使用Python 2作为其内部基础架构,并且长期以来以Python 2作为其主要版本进行支持。

该项目的文档声称“由于RPython(PyPy的基础)建立在Python 2之上,并且非常不可能产生变化,只要PyPy在的那一天,PyPy的Python 2版本将永远存在”。

PyPy可能会对一些依赖于C的包产生兼容性或性能问题,但PyPy的开发团队正在不断努力解决这些困难。

IronPython

IronPython是.Net上实现的Python环境,其Python 2版本仍然十分活跃。

它目前的开发人员已经声明他们不太可能在2020年之前支持Python 2,而会更专注于IronPython3。

但这并不意味着其他人不会继续支持它。

Cython

另一种可能是Cython,尽管支持的人少。

Cython将Python编译为C来提高性能,还提供其他可选类型,并且打Python 2一出生就开始支持。

你可以用Cython将Python 2代码转换为C,再把它当作“冻住”的二进制文件来用。

根据应用程序的性质不同,这样干甚至会使得性能提升,当然以I/O限制为主的程序就没啥用啦。

但是,Cython计划在今年年底之前放弃Python 2的支持。

除此之外,你将无法使用旧版本的Cython继续运行旧版本的Python脚本。

从供应商处购买Python 2支持

以上都是短期解决方案,从长期来说,最好能获得Python解决方案供应商的支持。

ActiveState是ActivePython发行版和Komodo IDE的创建者,它把Python 3的相关特性重写了一遍,为想继续使用Python 2或者迁移到Python 3的客户提供商业支持。

一些供应商把对Python 2的支持当作另一个受支持产品中的一部分。

Red Hat Enterprise Linux版本6和7包含Python 2,因此从Red Hat买的这两个版本在生命周期内会继续支持Python 2。

第三种选择是从咨询公司或承包商处购买支持。

他们给予你的支持程度取决于你个人的需求和目标。

支持可能包括制定长期策略,提出过渡计划来摆脱Python 2,并且重写各种相关软件;

或者手动将Python 2的补丁合并到自定义的运行环境中。

自己维护Python 2

Python是一个开源项目。

代码就在那儿,你想怎么魔改都可以。

如果你想改Python标准库,通常来说不会太难,因为大多数Python标准库本身就是用Python编写的。

但是如果你需要在标准库或CPython解释器中对Python使用的C模块进行更改,那就有点挑战性了。

你需要了解C并熟悉CPython的内部实现。

啥都不干

如果没坏,就别管它。

这是许多企业在Windows NT和Windows 2000上使用的策略,在这俩停止服务前一样用的好好的。

注意,这个方法仅限于那些只供内部使用,并且没在公共互联网出现的Python程序,理论上可以无限期运行。

在受控环境下,虚拟机和容器化同样提供了保证这些程序使用的方案。

你可以将特定版本的Python 2运行环境“冻结”到容器或VM中,再加上相关标准库,程序所需的模块以及程序本身。

但还是得说,任何上古遗留的程序,即便没有暴露给外界过,也应该定期重新评估。

无论哪种情况,Python 2用户的最佳长期策略是迁移到Python 3。

我大清地大物博,迟早也要完,更何况Python 2?

它已经是过去时了

好消息是,优达的人工智能入门纳米学位,采用的是 Python 3,所以大家可以放心尽情的学习。双十一价格打八折,是很好的入手机会~~(百度搜索优达学城,即可到达双十一主会场)

投稿:之肴

编译者和原作者观点,不代表优达学城

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

— 完 —

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20191023A0QBDH00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券