我已经为 Python 3.0/3.1 编写了一个纯 Python 模块,我还想让它与 2.x(可能只有 2.6/2.7)兼容,以便让尽可能多的受众使用它。
该模块涉及读取和写入一组相关的文件格式,因此 2.x 和 3.x 版本之间的差异会很小——例如io.BytesIO
,而不是StringIO.StringIO
——但并非所有这些都可以通过 try/except 块轻松处理,例如作为设置元类。
处理这个问题的正确方法是什么?两个必须保持同步的几乎相同的代码库还是一个带有特征检测的代码库?一个单一的、干净的代码库加上 2to3 或 3to2?