我目前正在python 3.3上编写一些代码。不幸的是,我依赖的一些插件还不兼容Python3,我需要切换回Python2.7。
为了避免重构所有代码,我想做类似
的事情if(os.python.version<3.0):
from _future_ import print, super
这样做的正确方法是什么
答案 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的答案。