在所有错误消息中打印python版本

在所有错误消息中打印python版本,python,error-handling,Python,Error Handling,我有一个由用户调用的python脚本,例如pythonscript.py或python3script.py。如果此脚本引发错误,那么使用哪个python版本很重要 当然,我可以向用户请求用于执行script.py的命令,但是这可能无法解析python版本python可以是python3.4或python2.7的别名 我知道我可以在脚本中打印sys.version。但我不想在每次运行该脚本时都打印它,只是在发生错误的情况下 所以另一个想法是简单地将整个脚本包装在一个try中,除了块 import

我有一个由用户调用的python脚本,例如
pythonscript.py
python3script.py
。如果此脚本引发错误,那么使用哪个python版本很重要

当然,我可以向用户请求用于执行script.py的命令,但是这可能无法解析python版本
python
可以是
python3.4
python2.7
的别名

我知道我可以在脚本中打印
sys.version
。但我不想在每次运行该脚本时都打印它,只是在发生错误的情况下

所以另一个想法是简单地将整个脚本包装在一个
try中,除了

import sys
try:
    # original content of script.py
except:
    print("Using python version {0}".format(sys.version))
    raise
然而,在我看来,这并不是很像蟒蛇。那么,是否有一种更优雅的解决方案可以将
sys.version
添加到每个错误消息中

这个问题不是重复的,因为我不想检查版本信息。我的脚本应该与所有版本的python一起运行。但是,应将自定义消息(在本例中为系统版本)附加到stacktrace。

>>> import sys
>>> sys.version
我不想在每次运行该脚本时都打印它,只是在发生错误的情况下


使用语句您可以更改
sys.excepthook
以包含所需的行为。 只需在脚本开头添加以下内容:

import sys
def my_except_hook(exctype, value, traceback):
        print("Using python version {0}".format(sys.version))
        sys.__excepthook__(exctype, value, traceback)
sys.excepthook = my_except_hook

如果代码中出现错误,则除了正常的错误消息外,还会打印python版本。

如果使用
日志记录
,则可以将其添加到输出格式中