在运行时检测Python版本
我有一个Python文件,可能需要支持Python版本<3.x和> = 3.x. 有没有一种方法来反思Python运行时知道它正在运行的版本(例如, 2.6 or 3.2.x )? 
 当然,看看sys.version和sys.version_info 。 
例如,要检查您是否正在运行Python 3.x,请使用
 import sys if sys.version_info[0] < 3: raise "Must be using Python 3" 
 这里, sys.version_info[0]是主版本号。  sys.version_info[1]会给你次要的版本号。 
 在Python 2.7及更高版本中, sys.version_info的组件也可以通过名称访问,所以主版本号是sys.version_info.major 。 
另请参见如何在使用新语言function的程序中检查Python版本?
试试这个代码,这应该工作:
 import platform print(platform.python_version()) 
根据sys.hexversion和API和ABI版本控制 :
 import sys if sys.hexversion >= 0x3000000: print('Python 3.x hexversion %s is in use.' % hex(sys.hexversion)) 
 最好的解决scheme取决于多less代码不兼容。 如果你需要支持Python 2和3的地方有很多,那么就是兼容性模块。  six.PY2和six.PY3是两个布尔值,如果你想检查版本。 
 然而,比使用大量if语句更好的解决scheme是尽可能使用six兼容性函数。 假设,如果Python 3000有下一个新的语法,有人可以更新six所以你的旧代码仍然可以工作。 
 import six #OK if six.PY2: x = it.next() # Python 2 syntax else: x = next(it) # Python 3 syntax #Better x = six.next(it) 
干杯
 以下是我使用sys.version_info检查Python安装的一些代码: 
 def checkInstallation(rv): currentVersion = sys.version_info if currentVersion[0] == rv[0] and currentVersion[1] >= rv[1]: pass else: sys.stderr.write( "[%s] - Error: Your Python interpreter must be %d.%d or greater (within major version %d)\n" % (sys.argv[0], rv[0], rv[1], rv[0]) ) sys.exit(-1) return 0 ... # Calling the 'checkInstallation' function checks if Python is >= 2.7 and < 3 requiredVersion = (2,7) checkInstallation( requiredVersion ) 
为了使脚本与Python2和3兼容,我使用:
 from sys import version_info if version_info[0] < 3: from __future__ import print_function