根据python版本在代码中添加条件

时间:2013-12-17 02:19:35

标签: python

我目前正在python 3.3上编写一些代码。不幸的是,我依赖的一些插件还不兼容Python3,我需要切换回Python2.7。

为了避免重构所有代码,我想做类似

的事情
if(os.python.version<3.0):
from _future_ import print, super

这样做的正确方法是什么

2 个答案:

答案 0 :(得分:3)

你在这里走错了路,有几个方面。首先,不要检查版本,检查功能。 @dave你在评论中的链接很好地解释了这一点。

其次,如果您确实检查了版本,即使没有多个拼写错误,这根本不起作用:

if(os.python.version<3.0):
    from _future_ import print, super

__future__语句可以在模块docstring,空行,注释行和其他__future__语句之前。它不会出现在其他任何地方 - 如果你尝试,你只会遇到语法错误。

第三,对于您提供的示例,检查任何是没有意义的。靠近文件顶部,

from __future__ import print_function

在Python 2.7和Python 3中都很好。在Python 3中它根本没有效果。

答案 1 :(得分:0)

正如zhangyangyu所说,你可以通过sys.version_info获取当前的python版本。

sys.version_info是元组,我总是在版本比较中使用前三个元素,如下所示:

if sys.version_info[:3] > (3,0):
    do something
elif sys.version_info[:3] > (2,5,2):
    do something else

或者,您可以使用distutils.version将当前版本与指定版本进行比较。

Here是关于如何使用distutils.version的答案。