如何检查哪个版本的Python解释器正在运行我的脚本?


当前回答

如果你想检测python 3之前的版本,但不想导入任何东西…

...你可以(ab)使用列表理解范围的变化,并在一个表达式中完成:

is_python_3_or_above = (lambda x: [x for x in [False]] and None or x)(True)

其他回答

就像Seth说的,主脚本可以检查sys。Version_info(但请注意,它直到2.0才出现,所以如果你想支持旧版本,你需要检查sys模块的另一个version属性)。

但是,您仍然需要注意不要在文件中使用旧版本Python中没有的任何Python语言特性。例如,这在Python 2.5及更高版本中是允许的:

try:
    pass
except:
    pass
finally:
    pass

但在较旧的Python版本中不能工作,因为只能使用except OR最终匹配try。所以为了与旧版本的Python兼容,你需要写:

try:
    try:
        pass
    except:
        pass
finally:
    pass

尝试使用os。Popen在变量中读取它:

import os
ver = os.popen('python -V').read().strip()
print(ver)

这只返回2.7 3.6或3.9

import sys
current_version = ".".join(map(str, sys.version_info[0:2]))

这是你通常需要的…

已经有几个答案建议如何查询当前的python版本。为了以编程方式检查版本需求,我将使用以下两种方法之一:

# Method 1: (see krawyoti's answer)
import sys
assert(sys.version_info >= (2,6))

# Method 2: 
import platform
from distutils.version import StrictVersion 
assert(StrictVersion(platform.python_version()) >= "2.6")

所有的答案都有深刻的见解

另一种方法是platform.python_version_tuple()

python3 -c “import platform; print(platform.python_version_tuple())”

(‘3’, ‘6’, ‘8’)