【问题标题】:Add conditions in code depending on python version [duplicate]根据python版本在代码中添加条件[重复]
【发布时间】:2014-01-04 15:50:28
【问题描述】:

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

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

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

这样做的正确方法是什么

【问题讨论】:

  • 您可以无条件地使用from __future__ import print_function,但是很多更改都没有一个简单的未来导入来解决它们。移植您的程序将需要更多的工作。

标签: python


【解决方案1】:

正如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 的答案。

【讨论】:

    【解决方案2】:

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

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

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

    __future__ 语句之前可以是模块文档字符串、空行、注释行和其他 __future__ 语句。它不能出现在其他任何地方 - 如果你尝试,你只会得到一个语法错误。

    第三,对于您给出的示例,检查 anything 是没有意义的。在文件顶部附近,

    from __future__ import print_function
    

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-10
    • 1970-01-01
    • 2019-07-17
    • 1970-01-01
    相关资源
    最近更新 更多