Python 2.x 即将终止支持,是时候和 Python 2 讲再见了
别再约束自己了,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了。
作者:Rich M是英国国家网络安全中心(NCSC)的平台安全研究员。
来自:云头条
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
码云推荐 | 微信读书开源的跨平台 UI 开发框架 QMUI
QMUI 是腾讯微信读书开发团队开源的一套致力于提高项目 UI 开发效率的跨平台解决方案,项目有iOS、Android 与 Web 三端支持。 QMUI Web QMUI Web 是一个专注 Web UI 开发,帮助开发者快速实现特定的一整套设计的框架。框架主要由一个强大的 SASS 方法合集与内置的工作流构成。通过 QMUI Web,开发者可以很轻松地提高 Web UI 开发的效率,同时保持了项目的高可维护性与稳健。如果你需要方便地控制项目的整体样式,或者需要应对频繁的界面变动,那么 QMUI Web 框架将会是你最好的解决方案。 它具有以下特性: 基础配置与组件。通过内置的公共组件和对应的 SASS 配置表,你只需修改简单的配置即可快速实现所需样式的组件。 SASS 增强支持。包含 70 个 SASS mixin/function/extend,涉及布局、外观、动画、设备适配、数值计算以及 SASS 原生能力增强等多个方面,可以大幅提升开发效率。 完善的内置工作流。内置的工作流拥有从初始化项目到变更文件的各种自动化处理,包含了模板引擎,雪碧图处理,图片集中管理与自动压缩,静态资源合...
- 下一篇
每日一博 | 敏捷开发中故事点和估算的秘密
高质量的估算能够帮产品负责人优化效率和冲突。因此,精准估算的重要性毋庸置疑。 估算并非易事。对软件开发人员来说,估算堪称是最难的工作之一。估算必须考虑所有能帮助产品负责人做出影响整个团队和业务决策的因素。因此,从开发到高管都为它焦头烂额也不足为奇,但这种做法是错误的。敏捷估算并不是什么性命攸关的大事,就只是估算而已,事实就这么简单。 我们不用要求团队周末加班加点来弥补一项被低估的工作。换句话说,与其事后补救,不如事前看一看有什么方法可以让敏捷估算尽可能变得更精准。 与产品负责人(PO)合作 敏捷开发中,产品负责人要负责确定backlog的优先级次序——即一个按优先级排好序的工作列表,其中包含关于产品所有所需完成的功能和修复的缺陷的简短描述。产品负责人能够从业务中提取需求,但他们不一定了解具体如何实现。因此,精准的估算能让产品负责人对每个工作项目的工作量有新的了解,这对他们评估每个项目的相对优先级能起到一定作用。 开发团队开始估算后,关于需求和用户故事的问题会经常出现。这是一件好事:这些问题可以帮整个团队更加充分的理解工作。对产品负责人来说尤为特别,将工作项拆解为粒度较小的任务,然后通过...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS6,CentOS7官方镜像安装Oracle11G