观点:Python 3,“迁移与否”是个大问题
极客时间编辑部
讲述:丁婵大小:7.85M时长:05:43
Python 3 已经发布十年了,对于技术人员来说,项目是否从 Python 2 迁移到 Python 3 依旧是个大问题。近日,InfoQ 编译了 Python 顾问塞巴斯蒂安·维托夫斯基(Sebastian Witowski)的一篇文章,他认为如果可以迁移的话,最好尽快迁移到 Python 3 ,但对于无法迁移的应用程序,也可以不必迁移。以下是重点内容。
Python 2 即将退出历史舞台
Python 2 的产品寿命结束时间最初被设定为 2015 年,但当时人们还没做好准备将项目“迁移”到 Python 3 上,所以延长到了 2020 年 1 月 1 日。
当时,人们不迁移到 Python 3 的主要原因有两个:一是 Python 3.1 和 3.2 比 Python 2 运行慢,二是在 2012 年的时候,200 个最常用的 Python 包中仅有一半迁移到了 Python 3 上。但现在,Python 3 的变化不可同日而语,它的最新版本不仅运行速度快而且功能丰富。
为什么仍然有一些 Python 2 项目?
具体主要有以下三个原因:
1. 从业务角度来看,迁移的成本太高了。
对于公司管理层来说,将项目从 Python 2 迁移到 Python 3 是很昂贵的,而且迁移过去也不会给公司带来更多价值。
2. 对初创公司来说,迁移的优先级不高。
初创公司需要的不是完美的、最新的代码,而是要添加新功能并改善用户体验,所以在初创团队的待办事项里,迁移到 Python 3 很可能排在了最后。
3. 对大公司来说,迁移的难度系数太高。
大公司遗留下来的 Python 2 代码数量庞大,其中有些代码很可能是已经离职的员工写的,迁移起来非常复杂,并且需要耗费大量时间。
继续使用 Python 2 的风险
你的程序有被黑掉的可能。虽然在 Python 3 或其他任何编程语言上也存在被黑的风险,但 Python 2 的概率更大,因为没有人会更新 Python 2,也没人修复里面的 Bug。
当然,这还不是最坏的结果,最糟糕的是,大多数 Package 已经放弃了其 Python 2 版本。因此,对 Python 2 的依赖越大,出现安全问题的可能性就越大。
Python 2 还有救吗?
塞巴斯蒂安·维托夫斯基认为,如果可以将项目迁移到 Python 3,最好就迁移过去,因为迁移后得到的长期收益将远远超过迁移的成本。但如果你不想迁移项目,你可以试试下面的解决方案,它们按照难度排序。
1. 什么都不做
如果你仅在计算机上运行的某种内部脚本上使用 Python 2,而且它没有依赖项,那么,什么都不做就是最好的解决方案。
2. 冻结应用状态
对于那些你不用担心安全问题的内部工具,你可以采用这个解决方案。
3. 更换 Python 解释器
对于很多人来说,Python = CPython,但它不是唯一的解释器,比如还有可以替代 CPython 的 PyPy。而且, PyPy 是在 Python2 之上构建的,不会去反对 Python2 的。
不过, PyPy 有一些限制。如果你的项目非常依赖 C 扩展,那么 PyPy 可能不适合你。但如果你切换到 PyPy,需要用测试来验证是否所有程序正常运行,如果能够运行,你的应用程序甚至可能比以前运行得更快。
4. 商业 Python 发行版
比如 RHEL,如果你购买了版本 8,直到 2024 年 6 月 Red Hat 将一直为你提供 Python 2 的支持服务。这就相当于为你在 Python 2 上多买了 4 年的 Bug 修复和更新。
5. 构建自己的 CPython 2
你也可以自己修复 Python 2。首先,你需要衍生 CPython 存储库,等待漏洞出现,对它们进行修补,然后编译自己的 CPython 版本,并在生产服务器上使用它。
项目迁移至 Python 3
最后,如果你想把项目迁移至 Python 3,你可以参考以下 3 个方法。
1. 跨代码
同时使用 Python 2 和 Python 3 的代码。在 Python 3 下运行测试,然后不断重写应用程序的各个部分,直到它能够在 Python 2 和 Python 3 上工作为止。接下来在生产环境中更改 Python 版本,最后删除 Python 2 代码。此方法最大的好处是你可以在迭代中完成此工作。
2. 将 Python 2 重写为 Python 3
将应用程序的 Python 2 版本保持在生产环境中,在一个单独的 git 中使用 Python3 版本。然后你要不断地测试新版本,当它准备好时,你就可以放弃 Python 2,使用 Python 3 版本。需特别注意的是,这种方法意味着你需要暂停向应用中添加新特性。
3. 重新编写应用
最后也是最困难的解决方案,用 Python 3 或你认为最有效的任何其他编程语言从头重写应用程序。这种解决方案可谓“劳民伤财”,但它可以让你完全重新设计你的项目。
以上是塞巴斯蒂安·维托夫斯基关于是否要迁移到 Python 3 的几个观点,你是否认同呢?欢迎在留言区一起讨论。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
请先领取课程
免费领取
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(2)
- 最新
- 精选
- 玉蜀黍初创公司应该都是Python 3了吧2
- 向百Python 3已经运行了十年,足够说明它的好用,并且完全可以替代二,就像现在如果还在用苹果4,那大部分的应用程序都无法使用,这样和换一个苹果的成本来说会更高。从收益来说,只要公司持续下去,就要选择好用的,才不会落伍。
收起评论