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

时间:2010-09-23 08:47:32

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

我为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 个答案:

答案 0 :(得分:11)

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

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

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