【问题标题】:Writing a module for both Python 2.x and 3.x为 Python 2.x 和 3.x 编写模块
【发布时间】:2010-09-23 08:47:32
【问题描述】:

我已经为 Python 3.0/3.1 编写了一个纯 Python 模块,我还想让它与 2.x(可能只有 2.6/2.7)兼容,以便让尽可能多的受众使用它。

该模块涉及读取和写入一组相关的文件格式,因此 2.x 和 3.x 版本之间的差异很小 - 例如io.BytesIO 而不是 StringIO.StringIO — 但并非所有这些都可以通过 try/except 块轻松处理,例如设置元类。

处理这个问题的正确方法是什么?两个必须保持同步的几乎相同的代码库还是一个带有特征检测的代码库?一个单一的、干净的代码库加上 2to3 或 3to2?

【问题讨论】:

标签: python python-3.x python-2.x


【解决方案1】:

完全针对 2.x 编写代码,以 2.x 系列中的最新版本为目标。在这种情况下,它可能会保持 2.7。通过2to3 运行它,如果它没有通过所有单元测试,则修复 2.x 版本,直到生成的 3.x 版本正常工作。

最终,当您想要放弃 2.x 支持时,您可以使用生成的 3.x 版本并直接开始修改它。在那之前,修改2.x版本。

这是2to3 的工作人员强烈推荐的工作流程。不幸的是,我不记得我从中收集到所有这些的文档的链接。

【讨论】:

  • 不要打扰 Python 3.0.x,它在 3.1 发布后立即被弃用。
猜你喜欢
  • 2011-01-24
  • 2013-07-05
  • 1970-01-01
  • 1970-01-01
  • 2013-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-20
相关资源
最近更新 更多