如何编写能够正确地要求最低Python版本的Python代码?

2024-04-25 22:06:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我想看看是否有任何方法需要一个最小的python版本。

由于新的异常处理(as关键字),我有几个python模块需要python 2.6。

看起来,即使我在脚本的开头检查了python版本,代码也不会运行,因为解释器将在模块内部失败,抛出一个难看的系统错误,而不是告诉用户使用更新的python。


Tags: 模块方法代码用户版本脚本系统as
3条回答

您不应该在脚本内部使用任何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

如果您需要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中的语法错误。

相关问题 更多 >