'''
Python 是两门的编程语言。
'''
翻译整理 | 公 众 号 HackerHub
参考来源 | ncsc.gov.uk
“Python 是两门的编程语言”。能看懂这个笑话的人肯定是有故事的程序员。这到底是啥梗?看完自然就明白了。
Emm...醒醒,Python2还有百来天就停更了。
Python2 要停更说了很久啦,但终将还是快来了。在2020年1月1号,Python 2 将走完整个生命历程,不再受官方支持,不会再有bug修补,不会再有安全更新。
所以,如果你还在使用Python2.x,那现在是时候把你的代码换成Pyhton3的了。如果你继续使用这些不被支持的模块,那么你就是在拿你的组织和数据在冒险,因为迟早漏洞都会出现的,而这些漏洞却没有修。
这个问题的规模
下面是一个表格,来自Python 社区的Python Package Index,提供了10个受欢迎的Python 包的下载状态数据。
在这表格里的每一个包,都是每个月有百万以上的下载量,在这表格的数字,采自2019年6月份。
正如你所看到的的,大部分下载的包,都是Python2.x写的。好的一个,Flask,是3.x版本中下载多的,但尽管如此,Flash的下载量中仍然有三分之一属于Python2.x。
在这些下载中,即使只有一部分被用于活跃的项目,Python2的停更也会使得数百万的系统面临安全风险。
Python2 停更导致的问题
Python 2 停更会带来一大堆问题,下面这些你可能会遇到:
依赖:
很多的项目例如NumPy, Requests 和 TensorFlow 承诺在2020年停止对2.x的支持,当中有些项目已经做到了这点。
这就意味着,对于那些你喜欢的模块,你想使用新的功能,你就需要升级到Python3.拖得越久才更新,你的关于Python3的依赖需要改动的就越多,后导致更新也越来越难。
你可能会干扰到其他开发者:
如果你维护的库是别的开发者所依赖的,那么你可能就阻止他更新到3版本了。通过阻止别人升级,你就间接不自觉地使别人增加了安全风险。
你可能并没有在你的组织之外发布过任何代码,但也要考虑到你的同事可能在内部使用了你的代码。
你会错过新的功能。
Python 3 有很多功能新功能你可能错过的
对开发者的帮助
将代码由Python2改为Python3会是一项十分吃力的过程。幸亏,有一些工具和资源可以让这个过程更简单。
“Can I Use Python 3”
“Can I Use Python 3” 是一个检查你的项目,看看是否有东西阻止你升级到Python3的程序。使用这个程序去看看你需不需要替换掉一些仅在Python2.x上使用的库。在这种情形下,到这些库的页面上看是否有升级到Python3的计划。
https://github.com/brettcannon/caniusepython3
“2to3”
“2to3” 是一个Python程序,主要功能是尝试把Python2.x的源代码,弄成Python3版本。它通常会作为一个脚本和Python解析器一起安装。如果你想看看它会对你的源代码产生什么改动,你可以在不修改任何东西的情况下运行这个程序。注意,这个工具不是完美的,你仍然需要手动修改一些代码。
https://docs.python.org/2/library/2to3.html
“Supporting Python 3”
“Supporting Python 3” 是一本免费开源的电子书,可以用来指导添加Python3支持这个过程。这本电子书阐释了你可能会遇到的一些常见的迁移问题,并指出使用Python3特性来提升代码的方法。
http://python3porting.com/
“Six”
“Six” 是一个Python2 和Python3 都兼容的库,给开发者提供了一个既能兼容Python2 ,又能兼容Python3的方法。使用这个库,开发者可以选择哪个Python 版本的解析器可以用来运行你的代码。如果选择使用这个库,请考虑到Python版本可能很快就要升到4.0了(此文成文时,Python新版是3.7.4)。
https://github.com/benjaminp/six
何时迁移,不是一个选择题
如果把你的代码迁移到Python3不可能,另一个选择是给商业公司钱,让他们帮你维护Python2.
至少有一个公司公布了一个Python2的支持包,或Python3 的第三方支持包了。
有些Linux发行版包含Python2,将会被持续支持到系统停更的那天。例如,CentOS 7 和Debian 10 都用了Python2,并会被持续支持到2024年。
但不知道它的支持会是怎样的。
别忽视安全风险
在(英国)国家网络安全中心,我们一直强调打补丁的重要性。这不是一直都很容易做到的,但打补丁是一件维护你的技术安全的基础的事了。
WannaCry 流氓软件提供了一个经典案例,展示了运行不被支持的程序会发生什么事。它感染了超过23万台电脑,导致了全球很大的混乱。
近,Equifax 的网络攻击,导致了高达7亿美元的善后费。
若决定在Python2 停更后仍继续使用,你就要接受使用不被支持的程序所带来的一切风险,然而,一个安全的版本已经在向你招手了。
Python为啥被说是两门语言?因为Python2,Python3彼此不相兼容,这种操作在业界相当罕见,因此坊间戏称其为两门语言。