2024-04-25 22:06:54 发布
网友
我想看看是否有任何方法需要一个最小的python版本。
由于新的异常处理(as关键字),我有几个python模块需要python 2.6。
as
看起来,即使我在脚本的开头检查了python版本,代码也不会运行,因为解释器将在模块内部失败,抛出一个难看的系统错误,而不是告诉用户使用更新的python。
您不应该在脚本内部使用任何Python2.6特性。另外,在导入任何需要新Python版本的模块之前,必须进行版本检查。
例如,像这样开始脚本:
#!/usr/bin/env python import sys if sys.version_info[0] != 2 or sys.version_info[1] < 6: print("This script requires Python version 2.6") sys.exit(1) # rest of script, including real initial imports, here
您可以利用Python在比较元组时会做正确的事情这一事实:
#!/usr/bin/python import sys MIN_PYTHON = (2, 6) if sys.version_info < MIN_PYTHON: sys.exit("Python %s.%s or later is required.\n" % MIN_PYTHON)
我发现最简单的方法是添加一行,比如:
b'You need Python 2.6 or later.'
在文件的开头。这利用了字节文本是在2.6中引入的这一事实,因此任何早期版本都将使用您编写的作为堆栈跟踪的任何消息引发SyntaxError。
SyntaxError
如果您需要Python2.7,那么:
{'You need Python 2.7 or later.'}
这是2.6中的语法错误。
对于Python2.5,这应该有效:
'You need Python 2.5' if 'you want this to run or' else 'this line fails!'
这是2.4中的语法错误。
您不应该在脚本内部使用任何Python2.6特性。另外,在导入任何需要新Python版本的模块之前,必须进行版本检查。
例如,像这样开始脚本:
您可以利用Python在比较元组时会做正确的事情这一事实:
我发现最简单的方法是添加一行,比如:
在文件的开头。这利用了字节文本是在2.6中引入的这一事实,因此任何早期版本都将使用您编写的作为堆栈跟踪的任何消息引发
SyntaxError
。如果您需要Python2.7,那么:
这是2.6中的语法错误。
对于Python2.5,这应该有效:
这是2.4中的语法错误。
相关问题 更多 >
编程相关推荐