为什么迁移至Python 3这么难?
InfoQ编辑陈思
讲述:丁婵大小:8.21M时长:05:59
2020 年 1 月 1 日,Python 2 的生命周期正式截止,Python 核心开发人员也宣布即将不再提供该版本的安全更新,并建议用户尽快迁移至 Python 3。然而问题也在此时出现了,不论 Python 3 有多少优点,迁移的过程对于用户来说都极其痛苦,但是如果不这么做的话,又会有其他问题出现。
Python 3 的迁移为什么如此困难?
设计之初,Python 3 的预期是用户会直接转移到新版本,从而放弃使用 Python 2 。然而在一开始,人们有很多理由不采用 Python 3:最主要的原因是,它并没有与 Python 2 兼容。大多数的库希望同时在 Python 2 和 Python 3 上运行,这在一开始很难运作,并且由于缺乏支持工具,移植代码的工作十分艰难。
转折点发生在大约 2016 年左右的 Python 3.5 发行版中 ,该版本增加了矩阵乘法、引入了 asyncio、对 OrderedDict 的速度进行了提升以及实现了类型提示,这些提示为 Python 带来了一些类似于静态语言的功能。
更高版本包含更多功能,例如 Pathlib 库和 f 字符串操作。 通过这些更改,人们使用的许多库(例如用于机器学习的 scikit-learn )开始向 Python 3 迁移。
除了 Python 3 本身存在的一些技术问题,用户不愿意迁移的主要原因还有这几点。
安全问题。用户认为不进行升级会带来更大的风险,但是在大型组织或机构中,不允许员工自己升级 Python:管理员或安全团队会向他们推送更新。 在某些情况下,也不允许下载 PIP。 如果 Python 2 是安全团队同意的默认设置,那么它可能需要做出巨大的努力才能说服人们将其切换到 3,尤其是在受到严格监管(例如医疗保健或金融)和政府的环境中。
使用惯性。尽管许多版本的 Linux 中(例如 RHEL),都同时兼容 Python 2 与 Python 3,但这不是默认的选项,因此用户在 2 和 3 之间切换时,经常发现一些错误,尤其是指向系统版本的指针,例如,在 Debian 上使用 Python。
如何避免迁移出现问题?
如何迁移到 Python 3?每家公司的做法可能有所不同,所以在此之前,不如先看看官方给出的建议。
放弃对 Python 2.6 和更早版本的支持,因为从 Python 2.7 迁移要容易得多,并且如果必须运行 Python 2.6,请考虑使用 six library 来与 Python 3 兼容。
确保 setup.py 文件正确指定了代码库支持的 Python 版本,并且该文件至少包括 Programming Language :: Python :: 2 :: 仅作为 trove 分类器。
确保适应在 Python 2 和 3 之间处理整数除法的更改。例如,在 Python 2 中 9/2 = 4,而在 Python 3 中 9/2 = 4.5。如果可以在代码中使用“future import”除法和“//”运算符进行整数除法,那么代码已经与 Python 3 兼容。
当运行的代码因运行版本不同而表现不同时,最好检查 Python 3 支持的特定功能是否能够运行,而不是检查 sys.version_info [0] 是否等于 3。
为了帮助对齐用 Python 3 编写的任何新代码并确保其兼容性,请在创建的任何新模块的顶部使用以下语句:from future import absolute_import, from future import division, 以及 from future import print_function。
迁移代码后,请在 setup.py 文件中更新分类器,使其包含 Programming Language :: Python :: 3,以表明代码支持 Python 2 和 3。
总而言之,虽然很麻烦,但是为了保持功能的先进性,企业或个人开发者还是不得不选择迁移到 Python 3。如果想避免迁移过程出现问题,可以参考一些大公司的迁移情况,如Facebook、Mercurial、Dropbox 的 Python 3 迁移。
以上就是今天的内容,希望对你有所帮助。
原文链接:为什么迁移至 Python 3 这么难?
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
请先领取课程
免费领取
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(1)
- 最新
- 精选
- 小斧Python 3 也出来有一段时间啦!Python 2无法更新必然淘汰。1
收起评论