如何检查运行我的脚本的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“帮助”,“版权”,“学分”或“许可证”以获取更多信息。