Python 2大限来了!113天后自生自灭 | 附升级指南

OPEN编辑 5年前

  乾明 栗子 发自 凹非寺 
  量子位 报道 公众号 QbitAI

  Python 2 终于走到了尽头。

  官方宣布,新一年的钟声响起之时(2020 年 1 月 1 日),就是 Python 2 落幕之日。

  之后,Python 2 自生自灭,就算天塌下来,官方也不会再改进了。

  他们解释称,并不想伤害 Python 2 用户,这个决定是为了 Python 用户好。

  只有放弃 Python 2,他们才能让 Python 3 变得更好。

  这一举动得到了不少支持与理解:

  也有人念旧。

  有网友开始放话,表示自己会支持 Python2 的维护与更新,不为什么,就是想用 Python 2。

  但随着官方不再支持 Python 2,近年来也有大量的工具宣布放弃支持 Python 2。比如 TensorFlow、Pandas、Numpy、Jupyter Notebook、Cython 等工具。

  如果想用好 Python,摆在 Python 2 用户面前的路似乎就只有一条:

  升级到 Python 3。

  升级攻略

  升级的路上,会遇到很多问题,Python 官方先帮你解答了一波:

  1、没在 2020 年 1 月 1 日之前更新会怎样呢?

  如果有人发现 Python 2 里面有灾难性的安全漏洞,也不会有太多人志愿帮忙修补的。

  需要 Python 2 的相关帮助,也不会有很多人去帮你了。随着时间的推移,能帮到你的人还会越来越少。

  很多好工具都用不了,因为只有 Python 3 才支持。这样的话,还可能拖累那些跟你一起工作的小伙伴。

  以上问题,有些会从 1 月 1 日开始产生,另一些会随着时间越来越严重。

  2、我在 Python 2 里写的代码,怎么迁移到 Python 3?

  有中文文档提供,详细介绍了步骤,可以自动迁移。除此之外,由 2 到3,一些函数发生了变化,文档里有列表,各位可以自行查找,手动修改:

  中文文档:2to3 - 自动将 Python 2 代码转为 Python 3 代码

  https://docs.python.org/zh-cn/3.7/library/2to3.html

  另外,还有两个英文文档可以参考:

  Porting Python 2 Code to Python 3

  https://docs.python.org/3/howto/pyporting.html

  Python 3 Statement Practicalities

  https://python3statement.org/practicalities/

  3、我不确定我用的软件会不会依赖于 Python 2,怎么办?

  如果你是从供应商那里买的软件,问他们就好了。如果你是向开发者或者系统管理员付费的话,就问这些人。

  要是找不到相关的供应商和技术人员,就用“Can I Use Python 3?”去查找,你到底需不需要某个用 Python 2 写的软件。

  Can I Use Python 3:

  https://pypi.org/project/caniusepython3/

  想知道某些特定的工具,和 Python 3 兼不兼容,可以看 Python 2.7 Readiness、Python 3 Statement,以及 Python 3 Readiness。

  4、我还是依赖一些用 Python 2 写的软件,怎么办?

  同理,也是询问供应商和技术支持人员,如果你是向开发者或者系统管理员付费,就去问他们。

  问不到的话,用“Can I Use Python 3?”来查找升级到 Python 3 的工具。

  Can I Use Python 3:

  https://pypi.org/project/caniusepython3/

  5、有人能帮我一下么?

  有。如果你能支付扩展支持 (Extended Support) 的费用,就跟这些供应商联系吧:

  https://wiki.python.org/moin/PythonConsulting/Python%202%20support%20and%20migration

  你心里的问题,可能不止这些,但现在的你可能更需要一些鼓励,以便顺利完成迁移,所以来看 Hacker News 顶楼 (@ken) 的留言吧:

Python 2 到3,是我做过的最简单的迁移之一了。

有一个叫“six”的库可用,而且几乎在任何情况下,都能写出 2 和 3 兼容的代码。

  six 库传送门:

  https://pypi.org/project/six/

  Python 2 往事

  Python 源自 20 世纪 80 年代末,当时 Python 的创建者 Guido van Rossum 正在 CWI(荷兰数学与计算机研究所)研究 Amoeba 分布式计算系统,使用C和 Unix shell。

  在这个过程中,他逐渐对这些语言感到不爽,不仅运行速度太慢,无法处理复杂逻辑,也不得不重复造轮子。

  于是 Guido 就有了在业余时间创建 Python 的念头。1991 年,Python 第一版问世,可以说是兼具各家之长。

  之后一路势如破竹,2003 年以来,Python 一直在 TIOBE 排行榜中最受欢迎的编程语言的前十位。

  Python 在 2007 年获得了 TIOBE 年度最佳编程语言奖。该奖项是根据 TIOBE 指数,授予全年受欢迎程度最高的编程语言。

  Python 2 当时也受到大公司青睐:包括 Google、非死book、亚马逊在内的诸多知名公司都在使用它,包括 油Tube、Reddit 在内的大型应用,都是出自 Python。

  科研机构 NASA 还用 Python 来简化航天飞机的任务流程设计,去探索太空。

  “人生苦短,我用 Python”成为被大多数程序员熟知的“梗”,Python 也成为了一门吞噬世界的语言。

  这中间,虽然有 Python2 的功劳,也有 Python 基于时过境迁进行的“蜕变”。

  Python 3 未来

  随着算力的不断增强,计算平台发生变迁,Python 这条“巨蟒”在新的运行环境中,逐渐变得力有不逮。

  2008 年,为了修复缺陷,更好地适应新环境,让 Python 更有生命力,Python 社区做了一个非常有决断的动作:

推出 Python 3,不向后兼容。

  当时给 Python 2.7 定下的 Deadline 是 2015 年。因为担心大量现有代码无法迁移到 Python 3,这一时间又推迟到了 2020 年。

  这背后长痛不如短痛的想法,轻装前行的理念等等, 大部分开发者都理解。

  而且,这也为 Python 赢得了不少使用场景,最典型的就是成为了机器学习这一热门领域的宠儿。

  谷歌的 TensorFlow 使用的就是 Python。非死book 更直接,从 PyTorch 的名字来看就知道它和 Python 密不可分的联系。

  但版本割裂带来的阵痛,还是成为了 Python 被诟病的一大重点。

  虽然 Python 也发布了程序,帮助开发者更好地将 Python 2 代码转换为 Python 3。

  但这也让不少人纠结与徘徊,更有对手看到了机会,而且来势汹汹。

  比如谷歌 2009 年正式推出的 Go,更是“明目张胆”地抢人——开发一款从 Python 2.7 到 Go 语言的编译器。

  还有 Julia。这一源自 MIT 的新编程语言,创建于 Python 3 发布第二年,2012 年公开发布。

  主要的应用领域为数据分析、机器学习、物理学、数学、人工智能、信号与图像处理等等。

  而这些,都是当下 Python 发挥作用、面向未来的核心阵地。

  不过,Python 也没有停下来发展的脚步,也在不断推陈出新,面向未来编程。

  比如 PyPy 的不断优化,SciPy 和 NumPy 的不断完善等等,都在放大 Python 的能量。

  现在,Python 辞旧的倒计时已经挂起。

  这个起于 20 世纪 80 年代一个业余项目的语言,到现在仍旧具备超强生命力,兼容并包,成为开发者手中的利器,不断吞噬世界。