如何编写Python代码以正确要求最低Python版本?

76 投票
9 回答
29876 浏览
提问于 2025-04-16 18:53

我想知道有没有办法要求使用最低版本的Python。

我有几个Python模块需要Python 2.6,因为它们使用了新的异常处理方式(就是用到as这个关键词)。

看起来即使我在脚本开始的时候检查了Python的版本,代码还是无法运行,因为解释器在模块内部会出错,给出一个难看的系统错误,而不是告诉用户要使用更新的Python版本。

9 个回答

45

在你的脚本里,最好不要使用任何Python 2.6的功能。此外,在导入任何需要新版本Python的模块之前,你必须先检查你的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
61

你可以利用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)
12
import sys
if sys.hexversion < 0x02060000:
    sys.exit("Python 2.6 or newer is required to run this program.")

import module_requiring_26

这段话的有趣之处在于,它可以放在__init__文件或者模块里面。

撰写回答