gpt4 book ai didi

python - 如何在使用新语言功能的程序中检查 Python 版本?

转载 作者:IT老高 更新时间:2023-10-28 12:11:12 35 4
gpt4 key购买 nike

如果我有一个 Python 脚本至少需要一个特定的Python的版本,优雅失败的正确方法是什么何时使用早期版本的 Python 启动脚本?

如何尽早获得控制权以发出错误消息然后退出?

例如,我有一个程序使用三元运算符(2.5 中的新功能)和“with” block (2.6 中的新功能)。我写了一个简单的小解释器版本检查程序,这是脚本首先要做的事情打电话...除了它没有那么远。相反,在我的例程之前,python 编译期间脚本失败甚至被称为。因此脚本的用户看到了一些非常晦涩的语法错误回溯 - 这几乎需要专家推断这只是运行的情况错误的 Python 版本。

我知道如何检查 Python 的版本。问题是某些语法在旧版本的 Python 中是非法的。考虑这个程序:

import sys
if sys.version_info < (2, 4):
raise "must use python 2.5 or greater"
else:
# syntax error in 2.4, ok in 2.5
x = 1 if True else 2
print x

在 2.4 下运行时,我想要这个结果

$ ~/bin/python2.4 tern.py 
must use python 2.5 or greater

而不是这个结果:

$ ~/bin/python2.4 tern.py 
File "tern.py", line 5
x = 1 if True else 2
^
SyntaxError: invalid syntax

(为同事通灵。)

最佳答案

您可以使用 eval 进行测试:

try:
eval("1 if True else 2")
except SyntaxError:
# doesn't have ternary

另外,with 在 Python 2.5 中可用,只需添加 from __future__ import with_statement

编辑:为了尽早获得控制,您可以将其拆分为不同的 .py 文件并在导入之前检查主文件中的兼容性(例如在 __init__.py 中一个包):

# __init__.py

# Check compatibility
try:
eval("1 if True else 2")
except SyntaxError:
raise ImportError("requires ternary support")

# import from another module
from impl import *

关于python - 如何在使用新语言功能的程序中检查 Python 版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/446052/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com