检查执行无效语法脚本时的Python解释器版本
我有一个Python脚本,它使用的是Python 2.6的语法(除了error as value这个部分),而Python 2.5会对此报错。所以在我的脚本里,我加了一些代码来检查Python解释器的版本,这样用户就不会遇到麻烦的错误。然而,不管我把这段代码放在哪里,它都不管用。一旦代码遇到那个奇怪的语法,就会直接抛出语法错误,完全不理会我之前的版本检查。
我知道我可以在出现SyntaxError的地方加一个try/except块,然后在那儿生成错误信息,但我在想有没有更“优雅”的方法。因为我不太想在代码里到处放try/except块来解决版本问题。我考虑过使用一个__ init__.py文件,但用户并不会把我的代码当作一个包来导入/使用,所以我觉得这个方法可能不行,除非我漏掉了什么...
这是我的版本检查代码:
import sys
def isPythonVersion(version):
if float(sys.version[:3]) >= version:
return True
else:
return False
if not isPythonVersion(2.6):
print "You are running Python version", sys.version[:3], ", version 2.6 or 2.7 is required. Please update. Aborting..."
exit()
4 个回答
9
在 sys.version_info
中,你会找到版本信息,这些信息是以一个元组的形式存储的:
sys.version_info
(2, 6, 6, 'final', 0)
现在你可以进行比较:
def isPythonVersion(version):
return version >= sys.version_info[0] + sys.version_info[1] / 10.
16
代码开头可以加点什么吗?
import sys
if sys.version_info<(2,6):
raise SystemExit('Sorry, this code need Python 2.6 or higher')
15
创建一个包装脚本,用来检查版本,然后再调用你的真实脚本。这样做可以让你在解释器尝试检查真实脚本的语法之前,有机会先确认一下版本。