代码之家  ›  专栏  ›  技术社区  ›  Ben Blank Jarret Hardie

为python 2.x和3.x编写模块

  •  9
  • Ben Blank Jarret Hardie  · 技术社区  · 16 年前

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

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

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

    1 回复  |  直到 16 年前
        1
  •  11
  •   habnabit dwc    16 年前

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

    最后,当您想放弃2.x支持时,您可以使用生成的3.x版本并开始直接修改它。直到那时, 只有 修改2.x版本。

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

    推荐文章