如何在 Jupyter Lab/Notebook 中隐藏错误回溯?

How to hide the error traceback in Jupyter Lab/Notebook?

我的目标是从 python 的异常处理程序中获得最少的输出(没有回溯)。在普通的 python 脚本中,我可以使用 :

sys.tracebacklimit=0

但是在笔记本中,这似乎并没有按照我想要的方式工作,而且输出实际上更糟(更长)。有什么快速解决这个问题的方法吗?

import sys
ipython = get_ipython()

def hide_traceback(exc_tuple=None, filename=None, tb_offset=None,
                   exception_only=False, running_compiled_code=False):
    etype, value, tb = sys.exc_info()
    return ipython._showtraceback(etype, value, ipython.InteractiveTB.get_exception_only(etype, value))

ipython.showtraceback = hide_traceback

以上代码将只打印异常和颜色代码异常类型而不追溯。 这是你想要的。 将其粘贴到笔记本的第一个单元格中并尝试​​ 运行 it

或者更好:

# sorry, this was not a great idea. See @Eric's comment.
import functools
ipython = get_ipython()
method_name = "showtraceback"
setattr(
    ipython,
    method_name,
    functools.partial(
        getattr(ipython, method_name),
        exception_only=True
    )
)