将 Python 2 代码迁移到 Python 3


Python 3 是 Python 的未来,但 Python 2 仍处于活跃使用阶段,最好让您的项目在两个主要版本的Python 上都可用。本指南旨在帮助您了解如何最好地同时支持 Python 2 和 3。

简要说明

要使您的项目与单源 Python 2/3 兼容,基本步骤是:

  1. 只担心支持 Python 2.7

  2. 确保您有良好的测试覆盖率(coverage.py可以提供帮助;python -m pip install coverage

  3. 了解Python 2 和 3之间的区别

  4. 使用Futurize(或Modernize)更新您的代码(例如python -m pip install future

  5. 使用Pylint帮助确保您的 Python 3 支持不会退步 ( python -m pip install pylint)

  6. 使用caniusepython3找出哪些依赖项阻碍了您使用 Python 3 ( python -m pip install caniusepython3)

  7. 一旦您的依赖项不再阻碍您,请使用持续集成来确保您与 Python 2 和 3 保持兼容(tox可以帮助针对多个版本的 Python 进行测试;python -m pip install tox

  8. 考虑使用可选的静态类型检查来确保您的类型使用在 Python 2 和 Python 3 中都有效(例如,使用mypy在 Python 2 和 Python 3 下检查您的类型;python -m pip install mypy)。

注解

注意: usingpython -m pip install保证pip您调用的是为当前使用的 Python 安装的,无论是系统范围的pip还是安装在虚拟环境中的。

详情

同时支持 Python 2 和 3 的一个关键点是您可以从今天开始!即使您的依赖项不支持 Python 3,但这并不意味着您现在不能对代码进行现代化以支持 Python 3。支持 Python 3 所需的大多数更改会导致使用更新的实践来更清晰的代码,即使在 Python 2 代码中也是如此。

另一个关键点是,现代化您的 Python 2 代码以支持 Python 3 在很大程度上是自动化的。虽然由于 Python 3 明确了文本数据与二进制数据,您可能不得不做出一些 API 决策,但现在主要为您完成了较低级别的工作,因此至少可以立即从自动更改中受益。

在阅读有关移植代码以同时支持 Python 2 和 3 的详细信息时,请牢记这些关键点。

删除对Python 2.6及更早版本的支持

虽然您可以让 Python 2.5 与 Python 3 一起工作,但如果您只需要与 Python 2.7 一起工作,那就容易多了。如果放弃 Python 2.5 不是一个选项,那么这六个项目可以帮助您同时支持 Python 2.5 和 3 ( python -m pip install six)。但是请注意,几乎所有列在本 HOWTO 中的项目都不会提供给您。

如果您能够跳过 Python 2.5 和更早版本,那么对代码进行所需的更改应该继续看起来和感觉像惯用的 Python 代码。在最坏的情况下,您将不得不在某些情况下使用函数而不是方法,或者必须导入函数而不是使用内置函数,但否则整体转换对您来说不应该感到陌生。

但是您应该只支持 Python 2.7。Python 2.6 不再免费支持,因此没有收到错误修正。这意味着将不得不解决您在 Python 2.6 中遇到的任何问题。本 HOWTO 中还提到了一些不支持 Python 2.6 的工具(例如Pylint),随着时间的推移,这将变得越来越普遍。如果你只支持你必须支持的 Python 版本,这对你来说会更容易。

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/292418.html

(0)
上一篇 2022年11月1日
下一篇 2022年11月1日

相关推荐

发表回复

登录后才能评论