Python:如何创建与Python 2和Python 3兼容的Python项目?

时间:2013-05-21 08:14:11

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

我想创建一个应该与Python 2.7和Python 3.3兼容的包。 逻辑应该只存在一次。

你通常如何代表编程逻辑 - 在Python 2.7或Python 3.3中? 或者你选择不同的方式?

编辑:如何在核心中处理此问题?

2 个答案:

答案 0 :(得分:1)

我倾向于使用一些__future__导入(可能在Python 3中被安全地忽略),以及偶然try except用于某些导入语句。另外,我为basestring / str兼容性定义了一个字符串类型。仅仅取决于我对每个模块的需求。

例如:

from __future__ import absolute_import
from __future__ import unicode_literals
from __future__ import division
from __future__ import print_function
try:
    import ConfigParser as cfgparser
except ImportError:
    import configparser as cfgparser
try:
    stringtype = basestring
except NameError:
    stringtype = str

我认为six包已经这样做了,所以这可能是另一个不错的选择。

答案 1 :(得分:1)

你只需要使用相同语言的那些位,并在其他部分中处理条件或异常处理即可。

这更难或更容易,具体取决于您的软件功能以及您需要支持的Python版本。通过支持Python 2.6,2.7和3.3,它变得相对简单。

我建议你查看这本书:http://python3porting.com/,特别是“支持Python 2和3没有2to3转换”一章和附录,其中包含大量如何解决大多数不兼容问题的例子。

six库也可能有用。