为Python 2.x和3.x编写一个模块

9
我已经编写了一个纯Python模块,适用于Python 3.0/3.1。为了让更多的人使用,我还想将其与2.x版本兼容(可能只是2.6 / 2.7)。该模块涉及读写一组相关的文件格式,因此2.x和3.x版本之间的差异很小 - 例如,使用io.BytesIO而不是StringIO.StringIO,但并非所有差异都可以通过try/except块轻松处理,例如设置元类。正确的处理方法是什么?是保持两个几乎相同的代码库同步,还是在一个代码库中添加功能检测?或者是一个干净的单一代码库再加上2to3或3to2工具转换?

Python的HOWTO 将Python 2代码移植到Python 3在这个主题上提供了一些很好的建议。 - Piotr Dobrogost
1个回答

11

完全针对2.x编写代码,目标是针对2.x系列中最新版本。在这种情况下,它可能仍然是2.7。通过2to3运行它,如果它不能通过所有单元测试,请修复2.x版本,直到生成的3.x版本可用。

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

这是由参与2to3开发的人员强烈推荐的工作流程。不幸的是,我不记得从哪份文件中得出这些内容的链接了。


不要使用Python 3.0.x,因为它在3.1发布后立即被弃用。 - Ned Deily

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接