如何检查运行我的脚本的Python版本是什么?

如何检查Python解释器的版本是否解释我的脚本?

这些信息在sys模块的sys.versionstring中可用:

>>> import sys 

人类可读:

 >>> print (sys.version) #parentheses necessary in python 3. 2.5.2 (r252:60911, Jul 31 2008, 17:28:52) [GCC 4.2.3 (Ubuntu 4.2.3-2ubuntu7)] 

进一步处理:

 >>> sys.version_info (2, 5, 2, 'final', 0) # or >>> sys.hexversion 34014192 

要确保脚本以Python解释器的最低版本要求运行,请将此代码添加到您的代码中:

 assert sys.version_info >= (2,5) 

这比较主版本和次版本信息。 添加微(= 0等),甚至releaselevel(= 'alpha''final'等)到你喜欢的元组。 但请注意,如果某个function在那里,那么“鸭子”检查几乎总是会更好,如果没有,则可以解决(或退出)。 有时候function会在更新的版本中消失,被其他function取代。

从命令行(注意大写'V'):

 python -V 

这在“man python”中有logging。

我喜欢sys.hexversion的东西。

http://docs.python.org/library/sys.html#sys.hexversion

 >>> import sys >>> sys.hexversion 33883376 >>> '%x' % sys.hexversion '20504f0' >>> sys.hexversion < 0x02060000 True 

你最好的select可能是这样的:

 >>> import sys >>> sys.version_info (2, 6, 4, 'final', 0) >>> if not sys.version_info[:2] == (2, 6): ... print "Error, I need python 2.6" ... else: ... from my_module import twoPointSixCode >>> 

另外,你总是可以用一个简单的尝试来包装你的导入,这个应该会捕获语法错误。 而且,对于@ Heikki的观点来说,这个代码将会和很多老版本的python兼容:

 >>> try: ... from my_module import twoPointSixCode ... except Exception: ... print "can't import, probably because your python is too old!" >>> 

把这样的东西:

 #!/usr/bin/env/python import sys if sys.version_info<(2,6,0): sys.stderr.write("You need python 2.6 or later to run this script\n") exit(1) 

在脚本的顶部。

请注意,根据脚本中的其他内容,比目标版本更旧的python版本可能无法加载脚本,因此无法报告此错误。 作为一种解决方法,您可以在脚本中使用更新的代码运行上述脚本。

我发现这个方法的地方。

 >>> from platform import python_version >>> print python_version() 2.7.8 

下面是一个简短的命令行版本,可以直接退出(对于脚本和自动执行很方便):

 python -c "print __import__('sys').version" 

或者只是主要的,次要的和微观的:

 python -c "print __import__('sys').version_info[:1]" # (2,) python -c "print __import__('sys').version_info[:2]" # (2, 7) python -c "print __import__('sys').version_info[:3]" # (2, 7, 6) 

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

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

 try: pass except: pass finally: pass 

但是在较老的Python版本中将不起作用,因为除了OR之外,您最终只能匹配try。 所以为了与以前的Python版本兼容,你需要写:

 try: try: pass except: pass finally: pass 
 import sys sys.version.split(' ')[0] 

sys.version给你你想要的,只要select第一个数字:)

在运行Python解释器之前查看MSDOS脚本以检查版本(以避免Python版本语法exception)请参阅解决scheme:

如何在使用新语言function的程序中检查Python版本?

MS脚本; Python版本检查Python模块的预启动http://pastebin.com/aAuJ91FQ (脚本可能很容易转换为其他操作系统脚本。)

最简单的方法

只需在terminal中键入python,就可以看到如下所示的版本

 desktop:~$ python Python 2.7.6 (default, Jun 22 2015, 18:00:18) [GCC 4.8.2] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> 

有了six模块,你可以通过以下方式来完成:

 import six if six.PY2: # this is python2.x else: # six.PY3 # this is python3.x 

如果你在linux上工作只是给命令“python”输出就会是这样的

** Python 2.4.3(#1,2009年6月11日,14:09:37)

linux2上的[GCC 4.1.2 20080704(Red Hat 4.1.2-44)]

请input“帮助”,“版权”,“学分”或“许可证”以获取更多信息。