将 Python 2 代码迁移到 Python 3
2022/11/1 23:24:59
本文主要是介绍将 Python 2 代码迁移到 Python 3,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Python 3 是 Python 的未来,但 Python 2 仍处于活跃使用阶段,最好让您的项目在两个主要版本的Python 上都可用。本指南旨在帮助您了解如何最好地同时支持 Python 2 和 3。
简要说明
要使您的项目与单源 Python 2/3 兼容,基本步骤是:
-
只担心支持 Python 2.7
-
确保您有良好的测试覆盖率(coverage.py可以提供帮助;
python -m pip install coverage
) -
了解Python 2 和 3之间的区别
-
使用Futurize(或Modernize)更新您的代码(例如
python -m pip install future
) -
使用Pylint帮助确保您的 Python 3 支持不会退步 (
python -m pip install pylint
) -
使用caniusepython3找出哪些依赖项阻碍了您使用 Python 3 (
python -m pip install caniusepython3
) -
一旦您的依赖项不再阻碍您,请使用持续集成来确保您与 Python 2 和 3 保持兼容(tox可以帮助针对多个版本的 Python 进行测试;
python -m pip install tox
) -
考虑使用可选的静态类型检查来确保您的类型使用在 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 版本,这对你来说会更容易。
这篇关于将 Python 2 代码迁移到 Python 3的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南
- 2024-11-16`PyMuPDF4LLM`:提取PDF数据的神器
- 2024-11-16四种数据科学Web界面框架快速对比:Rio、Reflex、Streamlit和Plotly Dash
- 2024-11-14获取参数学习:Python编程入门教程
- 2024-11-14Python编程基础入门