只有在极少数情况下,才需要单独的分支来处理不同的版本。你提到上下文管理器,它们很好,不使用它们会很糟糕,你是对的。但是对于Python2.4,您不必使用它们。所以那会很糟糕。因此,如果您想支持Python2.4,就必须编写一个没有上下文管理器的版本。但是,这个版本也可以在Python2.6下工作,因此在Python2.6中使用不同的版本是没有意义的。
至于python 3,有一个单独的分支就有一个解决方案,但通常不是最好的。
对于Python3的支持,有一个称为2to 3的东西可以将Python2代码转换为Python3代码。它并不完美,因此经常需要修改Python2代码来生成漂亮的Python3代码,但是Python2代码有一种改进的趋势。
使用distribute(setuptools的维护分支),您可以在安装期间自动进行此对话。这样,即使对于python 3,也不必有单独的分支。见
http://bitbucket.org/tarek/distribute/src/tip/docs/python3.txt
为了那些文件。
正如paul mcguire所写,甚至可以在不使用2to 3的情况下用相同的代码支持python3和python 2,但是如果你想支持2.6和3.x以外的任何东西,我不建议你这样做。你会得到太多这种丑陋的特殊攻击。对于2.6,它与Python3有足够的前向兼容性,可以编写好看的代码,同时支持Python2.6和3.x,但不支持Python2.5和3.x。