• 技术文章 >头条

    Python2的落幕:寿命还剩113天,逾期停止维护

    爱喝马黛茶的安东尼爱喝马黛茶的安东尼2019-10-10 13:32:26转载3433

    作为目前最为流行的编程语言,Python 的出现让计算机编程不再是生僻的专业技能,而是常人都能学习和使用的万金油,它也是人工智能领域里最为常用的语言之一。不过在三个月内,Python 或许要经历史上一次变化。

    昨天,Python 官方网站的一纸声明《Python 2 的落幕》引发了人们的广泛讨论:该开发社区表示,官方对于 Python 2 的支持将会在 2020 年 1 月 1 日结束,在这之后即使是出现安全问题,旧版本的语言也不会得到任何改进。人们现在必须立即转移到 3.0 以上版本了。

    目前,仍有一些开发者以志愿者的身份维护 Python2 语言。不过他们已共同决定,2020 年 1 月 1 日将是 Python2「生命终结」的那一天。该日之后,所有 Python2 相关的维护都将终止。

    为什么 Python2 更新到 Python3 这么慢

    不太了解编程的读者可能会有个疑问:总是提 Python3 比 Python2 好太多,为什么还是有人不更新呢?

    机器之心认为可能主要有以下几个原因:

    1. 工程稳定性相比软件的更新速度更为重要。

    编程语言是构成软件的基石,编程语言如果发生了更新换代,软件的更新不是一件小事,需要全面地对所有代码进行更新。在这一过程中,如果出现新旧版本不兼容、代码稳定性变差等情况,可能会影响到用户的持续使用。因此,对于一些版本迭代,很多软件开发者选择不更新。宁可保证用户使用的稳定性,也不能急于更新到最新版本。

    2. Python 官方「允许」Python2 持续存在。

    Python 官方在文档中也提到,大版本的更新有可能会「伤害」开发者。具体而言,如果在 2006 年就迅速要求开发者放弃 Python2,则很多开发者可能因为开发成本问题,直接放弃 Python。繁荣的开发者社区是维持 Python 编程语言地位的重要条件,因此官方一直在更新维护 Python2,让更多的开发者留存在社区中。

    3. Python2 确实也好用。

    虽然相比 Python3,Python2 存在很多大的问题,但是 Python2 依然也是一个开发者友好的 Python 版本,在 Python2 时期就有很多开源库支持了。因此,一些开发者希望继续使用 Python2。

    这些原因下来,Python3 取代 Python2 的进程就拖了十来年。不过,随着机器学习的发展,机器学习领域对编程语言的性能有很高的要求,且大部分新的工具都支持 Python3。因此,使用性能更好,有更多工具支持的 Python3 成为了开发者的必然选择。

    相关推荐:《Python教程

    放弃支持 Python2 的软件列表

    2017 年,机器之心曾报道过将会放弃 Python2 的开源工具。目前,这一列表又长了很多。

    TensorFlow、Scikit-learn、Pandas、XGBoost 等工具已经准备放弃 Python2。

    同时停止支持的还包括 Numpy、Matplotlib、Jupyter Notebook 等。

    还有很多如 Cython、IPython 在内的工具。

    以上为已经放弃 Python2 的开源工具列表(不完全统计)。从这个列表可以看到,Python 的生态系统是多么庞大。

    下表显示了多个项目确定停止支持 Python 2 的时间。从该表中可以得知每个项目的某个版本是否支持 Python 2、发布时间线以及扩展支持的时间。(Python 自己的时间线:https://docs.python.org/devguide/#status-of-python-branches)

    官方答疑

    官方同时提供了一些相关的答疑,机器之心整理如下:

    为什么要终止 Python2?

    答:终止 Python2 是因为我们要更好地帮助开发者。

    Python2 是 2000 年发布的。一些年之后,我们意识到需要对 Python 进行一次大的更新升级。因此在 2006 年,我们开始了 Python3 的开发工作。因为很多人在当时没有更新,而我们也不希望这次更新给他们造成损害,因此多年来我们一直在维护并公开新的 Python2 和 Python3 版本。

    但是这样一来,维护 Python 的工作变得非常困难。Python2 中有一些改进和维护是很难进行下去的。这会挤占我们提升 Python3 速度和性能的精力。

    而且,如果还有很多人继续使用 Python2,那些用 Python 开发程序的开源工作者工作起来会更困难。他们不能使用 Python3 中的新特性让开源工具变得更好用。

    我们不想伤害使用 Python2 的开发者,因此在 2008 年,我们宣布 Python2 将在 2015 年终止,并希望大家能够更新。当时,一些人更新了,但是还有一些人留在了 Python2 上,因此我们将终止时间推后到了 2020 年。

    目前 Python2 还有多久的寿命?

    答:从 2019 年 9 月 10 日起算还有 3 个月 21 天。有一个倒计时,在 pythonclock.org (https://pythonclock.org/) 网站上。

    机器之心在发稿时对倒计时网站的截图。

    如果没有升级,会怎么样?

    答:在终止日期到来后,即使用户发现了 Python2 上的灾难性安全问题,或者在 Python2 开发的软件中发现了这些问题,志愿者也不会帮助修复。如果用户需要 Python2 相关的软件协助,志愿者也不会提供帮助,并且越来越少的志愿者能够帮助到这些用户。同时,用户可能会失去使用优秀开源工具的机会,因为他们都是基于 Python3 开发的。同时,使用 Python2 的用户可能会拖慢其他使用 Python3 进行开发的人员的工作进度。

    如何将 Python2 代码转为 Python3?

    答:请参阅官方提供的指南。

    指南地址:https://docs.python.org/3/howto/pyporting.html

    如果用户基于 Python2 开发了一些软件,应该怎么做?

    答:如果是从供应商那里购买的软件或软件支持,则详情可咨询他们;如果是从开发者或系统管理员那里付款获得的软件,则咨询这些开发者或管理员。如果二者均不是,则点击「Can I Use Python3?」页面查找升级到 Python3 所需要的工具。

    caniusepython3 页面地址:https://pypi.org/project/caniusepython3/

    是否有人员可以提供用户帮助?

    答:是的。如果你付钱购买扩展支持,则与供应商联系。如果你可以付钱聘请一些人来帮助你,则可以在求职面板上发帖或直接聘请咨询人员。如果你需要志愿者提供免费帮助,则可以查看以下帮助页:https://www.python.org/about/help/。

    用户直到现在才听说 Python2 升级事宜。在哪里宣布的升级通知?

    答:我们在软件会议、Python 通知邮件列表、Python 官方博客、相关参考书和技术文章、社交媒体以及与出售 Python 支持的公司都讨论过 Python2 的升级事宜。

    用户怎样才能确保下次及时收到升级通知呢?

    答:从供应商那里购买 Python 支持,或者订阅 Python 通知邮件列表。

    订阅地址:https://mail.python.org/mailman3/lists/python-announce-list.python.org/

    从答疑来看,Python2 会被彻底抛弃。即使出现零日漏洞也不会有安全更新了,用户要抓紧升级,以免出现安全问题而得不到技术支持。

    转移需尽早

    目前,得到良好维护的开源项目大多已经转移到 Python 3 上了。你能找到的 Python2 项目源码,基本都是比较早期不再维护的项目,或是一些系统级项目(因为 Linux 和 MacOS 都自带 Python2.7)。根据 JetBrains 最新的 Python 开发者调查,大约 80% 开发者已在使用 3.5+ 版本。要知道在两年前,使用 Python 3 的比例还只有三分之一。

    Python 早已经提供了 2 to 3 自动化工具,仅需一行命令就可以将 Python 2 代码转成 3。在 HackerNews 上,很多人对于 Python 2 支持的结束展开了讨论。

    有网友表示:「Python 2 到 3(至少是 3.3 版本以上)是我做过最容易的过渡之一。我们可以通过库(Six)的帮助来完成转移,在几乎所有的情况下你都可以编写 2 到 3 版本兼容的代码,这意味着转移可以以每次一小部分的形式进行。至于依赖项,开发者们也已帮助升级了很多第三方模块。」

    总之,「如果人们用抱怨此事一半的精力去研究如何升级,转移到 3.x 版本的工作五年前就应该完成了。」根据经验,除非你的项目有非常罕见且不可替代的依赖项,或者庞大的 C 语言扩展,否则版本的转移会很容易。

    专题推荐:python2 落幕 113天 停止维护
    上一篇:python面试中较常问及的知识点梳理---高级特性 下一篇:小白学PYTHON时最容易犯的6个错误

    相关文章推荐

    • 初学者应该学习Python2还是学Python3

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网