机器之心 道
作为目前最为流行的编程语言,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 的开发者,因此在 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 开发了一些软件,应该怎么做?
答:如果是从供应商那里购买的软件或软件支持,则详情可咨询他们;如果是从开发者或系统管理员那里付款获得的软件,则咨询这些开发者或管理员。如果二者均不是,则点击页面查找升级到 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 支持的结束展开了讨论。
有 友表示:
总之,根据经验,除非你的项目有非常罕见且不可替代的依赖项,或者庞大的 C 语言扩展,否则版本的转移会很容易。
机器之心也在去年 1 月份为读者朋友准备了一份迁移指南。感兴趣的朋友可以阅读。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!