乾明 栗子 发自 凹非寺
量子位 报道 公众号 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 2 support and migration
你心里的问题, 可能不止这些, 但现在的你可能更需要一些鼓励, 以便顺利完成迁移, 所以来看 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 年代一个业余项目的语言, 到现在仍旧具备超强生命力, 兼容并包, 成为开发者手中的利器, 不断吞噬世界.
本文由用户 五嘎子 自行上传分享, 仅供网友学习交流. 所有权归原作者, 若您的权利被侵害, 请联系管理员.
来源: http://www.open-open.com/news/view/5213187448934699101