机器之心报导

机器之心编辑部

作为现在最为盛行的编程言语,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 成为了开发者的必然挑选。

扔掉支撑 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 言语扩展,不然版别的搬运会很简单。

机器之心也在上一年 1 月份为读者朋友预备了一份搬迁攻略。感兴趣的朋友能够阅览。

本文为机器之心报导,转载请联络本大众号取得授权。

推荐阅读