本问题已经有最佳答案,请猛点这里访问。
我目前正在python 3.3上编写一些代码。 不幸的是,我依赖的一些插件还不兼容Python3,我需要切换回Python2.7。
为了避免重构所有代码,我想做类似的事情
if(os.python.version<3.0):
from _future_ import print, super
这样做的正确方法是什么
stackoverflow.com/questions/446052/
您可以无条件地使用from __future__ import print_function,但是很多更改都没有轻松的导入来解决它们。 移植程序需要更多的工作。
有几个方面你在这里走错了路。首先,不要检查版本,检查功能。 @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中它根本没有效果。
它们也可以在模块docstring之前。
谢谢! 编辑添加。 模块可以有文档字符串吗? 大声笑 ;-)
谢谢,这解决了我的问题。
真的不回答这个问题..
正如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将当前版本与指定版本进行比较。
以下是关于如何使用distutils.version的答案。