别再约束自己了,Python 2将在2020年寿终正寝。

Python 2的报废(EOL)日期迟迟未到,不过现在终于有了眉目。自2020年1月1日起,Python 2将不再得到支持。Python的核心开发人员将不再提供错误修复版或安全更新。

因此,如果你仍在使用Python 2.x,是时候将代码移植到Python 3了。如果你继续使用未得到支持的模块,可能危及贵企业及数据的安全性,因为无人修复的漏洞迟早会出现。

问题的严重性

下面这张表列出了十个流行的Python软件包及统计数据,来自Python社区开发和共享的软件的存储中心Python Package Index。

表中每个软件包每月下载量达数百万次。本文中的数据来自2019年6月。

正如你所见,大多数下载的软件包仍针对Python 2.x版本。在最好的情况下,Web应用程序框架Flask主要是针对3.x而下载的。但即使如此,仍有近三分之一的下载仍针对2.x.

即使这些下载中只有一部分用于实际项目,Python 2报废仍可能影响数百万系统的安全性。

Python 2消亡带来的问题

Python 2报废带来了许多问题,这里是你可能会遇到的几个问题。

依赖项

NumPy、Requests和TensorFlow等许多大受欢迎的项目承诺到2020年将停止支持2.x,一些项目已经这么做了。

这意味着如果你想使用青睐的模块的最新功能,需要使用Python 3。等待更新的时间越长,到时将更改的依赖项的Python 3版本会越多,更新起来会变得越困难。

你可能阻碍其他开发人员

如果你在维护其他开发人员依赖的库,可能会阻止他们更新到3。如果阻碍其他开发人员,你在间接、可能无意中加大其他项目面临的安全风险。

你也许不在贵公司外面发布任何代码,但要考虑可能也在内部使用你代码的同事。、

你错失最新功能

Python 3有许多你错失的新功能,包括如下:

  • 来自表达式的好处——允许生成器将其操作的一部分委托给另一个生成器。

  • 统一编码字符串——统一编码处理起来更容易。

  • 打印函数——打印函数有额外的功能,因而使其更灵活。

  • 视图和迭代器取代列表——一些众所周知的API不再返回列表。比如说,字典返回键的视图、值的视图或两者的视图。

  • “multi-with”语句——复杂的with语句更易于阅读。

  • 使用*和**解包——扩大了*可迭代解包运算符和**字典解包运算符的用途。现在可以在函数调用中使用任意数量的解包运算符。

  • 纯关键字实参——允许实参出现在可变长度(varargs)实参的后面。

  • F字符串——运行时评估的一种新类型的字符串常量,可能含有任何有效的Python表达式。

  • 大量的加速和优化机制。

Python 3.0发布时,一些新功能向后移植到Python 2.7,可能很熟悉。如果你一直坚持使用2.6或更低版本,这些新功能对你来说可能很陌生。

帮助开发人员

将Python 2.x代码移植到Python 3可能是很艰巨的过程。幸好,一些工具和资源可以使这个过程较容易。

Can I Use Python 3 这个程序可检查你的项目依赖项,看看有没有依赖项在阻止你使用Python 3。使用该程序来查看你是否需要换掉任何使用Python 2.x的库。在这种情况下,有必要访问该库主页,看看是否有计划移植到3。

2to3 这个Python程序试图将2.x源代码转换成3。它通常与Python解释器一起安装为脚本。如果你只想看看它对源代码进行的每次变更有何差异,不用编写任何更改就可以运行该程序。注意这不完美,你可能仍需要手动修复一些代码。

《支持Python 3:深入指南》这份免费的开源电子书可指导你逐步完成添加Python 3支持的过程。本电子书解释了你可能遇到的一些常见迁移问题,并列出了使用Python 3中的新功能改进源代码的方法。

Six 是一个Python 2和3兼容库,让开发人员方便编写与Python 2和3都兼容的代码。使用该库,开发人员可以选择使用哪个版本的Python解释器来运行代码。如果你决定使用该库,确保代码表明了这一点:Python版本号可能很快增加到4.0(截至本文发稿时最新版本为3.7.4)。

利用他人的经验来帮助你——很多人已讲述了移植代码库方面的经验。Dropbox在2018年将代码库迁移到Python 3,撰写了一篇博文详细介绍了经验。

Python官网还提供了你可能觉得有用的说明文档。

迁移不是一种选择

如果无法将代码库迁移到Python 3,另一种选择是出钱请商业公司为你支持Python 2。

至少有一家公司已经宣布推出Python 2支持软件包和Python 2第三方软件包。

一些Linux发行版包含Python 2,报废后仍会得到支持。比如说,CentOS 7和Debian 10都使用Python 2,一直支持到2024年,但不知道到时这种支持是什么样的。

改进的机会

维护是任何软件开发生命周期(SDLC)的重要环节。该环节的一方面是改进软件性能、增强安全性,这两者都可以通过升级到Python 3来实现。

换句话说,如果你仍在使用Python 2,这正是改进你如何管理软件依赖项,并尽量减少安全债务的大好机会。

不要忽视风险

我们NCSC始终强调打补丁的重要性。打补丁并非总是易事,但这是你为了确保技术安全所能做的最基本工作之一。

WannaCry勒索软件就是一个典例,它表明了如果你运行不受支持的软件会发生什么。它感染了超过230000台计算机,在全球范围内重大破坏。最近,Equifax泄密事件导致高达达7亿美元的和解。

如果决定报废后继续使用Python 2,你就接受了使用不受支持的软件带来的种种风险,却明知道可以使用安全的版本。

但愿本文有助于说服你现在是时候开始迁移到Python 3了。

Python 2.x 即将终止支持,是时候和 Python 2 讲再见了相关推荐

  1. Python入门七:安装支持WinXp运行的Python及环境配置

    之前安装的Python开发的程序无法在WinXp上运行,这里记录下安装支持Xp系统的Python及环境配置 之前程序在Xp上运行的错误: 无法定位程序输入点 GetFinalPathNameByHan ...

  2. 《从问题到程序:用Python学编程和计算》——1.2 Python语言简介

    本节书摘来自华章计算机<从问题到程序:用Python学编程和计算>一书中的第1章,第1.2节,作者 裘宗燕,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 1. ...

  3. 迁移潮来袭!数十个项目宣布即将停止支持 Python 2

    之前我们曾报道过 Python 2.7 将于 2020 年退休的消息,随着该时间节点的临近,已陆续有一大批 Python 项目宣布将在 2020 年之前放弃对 Python 2.7 的支持,包括 pa ...

  4. Python 2 即将停止支持!

    之前我们曾报道过 Python 2.7 将于 2020 年退休的消息,随着该时间节点的临近,已陆续有一大批 Python 项目宣布将在 2020 年之前放弃对 Python 2.7 的支持,包括 pa ...

  5. 你的Windows 版本即将终止服务。请单击以下下载更新版本的Windows10以继续获得支持

    今天打开电脑后发现Windows update提示:你的Windows 版本即将终止服务.请单击以下下载更新版本的Windows10以继续获得支持. 如图: 这是由于本机安装的Windows 10 版 ...

  6. 即将放弃python的app_即将放弃Python 2.7的不止有Numpy,还有pandas和这些工具

    最近,Numpy 团队的一份声明引发了数据科学社区的关注:这一科学计算库即将放弃对 Python 2.7 的支持,全面转向 Python 3.由于目前存在很多基于 Numpy 的深度学习依赖库,该决定 ...

  7. Win 11 真的要来了!微软宣布 Win10 将于 2025 年终止支持!

    微软今日正式更新支持页面,Windows 10 家庭版和专业版的支持将于 2025 年 10 月 14 日结束. 值得注意的是,这是微软首次描述对 Windows 10 的支持结束,在此之前,微软仅记 ...

  8. 微软警告 Windows 10 1703 即将停止支持!

    当下各大科技公司都在尽自己所能优化软件版本的碎片化问题时,成效如何了? 整理 | 屠敏 出品 | CSDN(ID:CSDNnews) 每款软件.服务.工具乃至编程语言都有着属于自己的生命周期,根据科技 ...

  9. 零基础学python图文版-教到你会为止的Python入门课程即将开班

    原标题:教到你会为止的Python入门课程即将开班 [嫌长不看版] 1. " 码上行动"是我们编程教室制作的 Python 基础课程,完全零基础也可以学 2. 课程包括 视频.讲义 ...

最新文章

  1. 调用微信高级群发接口--视频群发接口出问题(微信官方文档错误纠正)
  2. 切换卡TabHost控件的使用
  3. 【模型解读】从“局部连接”回到“全连接”的神经网络
  4. php特性介绍(贼有用)
  5. 逻辑综合——优化电路
  6. Roslyn 使用 Directory.Build.props 管理多个项目配置
  7. Spring Security原理与应用
  8. LeetCode 1049. 最后一块石头的重量 II(DP)
  9. 内核模块编程之入门(二)—必备知识
  10. CentOs基础操作指令(文件所属管理和权限管理)
  11. Blockchair首席开发者质疑闪电网络能够扩展比特币:可锁定大部分闪电网络的流动性来破坏闪电网络
  12. ado显示,删除后刷新重新显示
  13. python读取rtf文件_richtextbox怎样读取txt文件或rtf文件
  14. 视频下载转换器:MovieSherlock for Mac
  15. win7计算机管理打开超慢,大师解答win7系统打开资源管理器窗口速度很慢的恢复技巧...
  16. PS中蒙版使用简单实例
  17. SpringAOP技术【松思园】
  18. vue支付宝html,vue 解决在微信内置浏览器中调用支付宝支付的情况
  19. python爬取股票数据,以上证指数为例,可以爬取任何股票,保存为temp.csv文件
  20. hgoi#20190821

热门文章

  1. python 二叉树中所有距离为k的节点_Redis:从应用到底层,一文帮你搞定
  2. idea抽取重复方法快捷键_使用 IDEA 几分钟就重构了同事800 行quot;又臭又长quot; 的类!真香!...
  3. ISOLINUX: A bootloader for Linux using ISO 9660/El Torito CD-ROMs
  4. CALLING PROCEDURES USING CALL AND RET
  5. linux内核驱动之 用户空间和内核空间
  6. win10调节屏幕分辨率导致黑屏
  7. 生成ltx文件命令_利用二次开发工具批量生成PCDMIS程序
  8. Python库:Pyinstaller库、pip工具、pip指定安装源和版本
  9. Html5新增表单属性
  10. 华为大数据中心山西_任正非:华为愿与山西一道建立“煤矿人工智能创新实验室”...