ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

将 Python 2 代码迁移到 Python 3

2022-11-01 14:18:24  阅读:385  来源: 互联网

标签:python Pandas 数据 熊猫 代码 数组


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 版本,这对你来说会更容易。

标签:python,Pandas,数据,熊猫,代码,数组
来源:

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有