极客视点
极客时间编辑部
极客时间编辑部
113241 人已学习
免费领取
课程目录
已完结/共 3766 讲
2020年09月 (90讲)
时长 05:33
2020年08月 (93讲)
2020年07月 (93讲)
时长 05:51
2020年06月 (90讲)
2020年05月 (93讲)
2020年04月 (90讲)
2020年03月 (92讲)
时长 04:14
2020年02月 (87讲)
2020年01月 (91讲)
时长 00:00
2019年12月 (93讲)
2019年11月 (89讲)
2019年10月 (92讲)
2019年09月 (90讲)
时长 00:00
2019年08月 (91讲)
2019年07月 (92讲)
时长 03:45
2019年06月 (90讲)
2019年05月 (99讲)
2019年04月 (114讲)
2019年03月 (122讲)
2019年02月 (102讲)
2019年01月 (104讲)
2018年12月 (98讲)
2018年11月 (105讲)
时长 01:23
2018年10月 (123讲)
时长 02:06
2018年09月 (119讲)
2018年08月 (123讲)
2018年07月 (124讲)
2018年06月 (119讲)
时长 02:11
2018年05月 (124讲)
时长 03:16
2018年04月 (120讲)
2018年03月 (124讲)
2018年02月 (112讲)
2018年01月 (124讲)
时长 02:30
时长 02:34
2017年12月 (124讲)
时长 03:09
2017年11月 (120讲)
2017年10月 (86讲)
时长 03:18
时长 03:31
时长 04:25
极客视点
15
15
1.0x
00:00/05:43
登录|注册

观点: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,那大部分的应用程序都无法使用,这样和换一个苹果的成本来说会更高。从收益来说,只要公司持续下去,就要选择好用的,才不会落伍。
收起评论
大纲
固定大纲
Python 2 即将退出历史舞台
为什么仍然有一些 Python 2 项目?
1. 从业务角度来看,迁移的成本太高了。
2. 对初创公司来说,迁移的优先级不高。
3. 对大公司来说,迁移的难度系数太高。
继续使用 Python 2 的风险
Python 2 还有救吗?
1. 什么都不做
2. 冻结应用状态
3. 更换 Python 解释器
4. 商业 Python 发行版
5. 构建自己的 CPython 2
项目迁移至 Python 3
1. 跨代码
2. 将 Python 2 重写为 Python 3
3. 重新编写应用
显示
设置
留言
2
收藏
4
沉浸
阅读
分享
手机端
快捷键
回顶部