回溯¶
Rich可以通过语法突出显示和格式化来呈现Python回溯。与标准的Python回溯相比,富回溯更易于阅读并显示更多代码。
要查看富回溯的示例,请运行以下命令:
python -m rich.traceback
打印回溯¶
这个 print_exception()
方法将打印正在处理的当前异常的回溯。以下是一个示例:
from rich.console import Console
console = Console()
try:
do_something()
except Exception:
console.print_exception(show_locals=True)
这个 show_locals=True
参数使Rich显示回溯的每一帧的局部变量的值。
看见 exception.py 看一个更大的例子。
回溯处理程序¶
Rich可以安装为默认的回溯处理程序,这样所有未捕获的异常都会突出显示。以下是如何::
from rich.traceback import install
install(show_locals=True)
有几个选项可以配置回溯处理程序,请参见 install()
了解更多细节。
自动回溯处理程序¶
在某些情况下,您可能希望自动安装回溯处理程序,而不必担心在模块中导入代码。您可以通过修改 sitecustomize.py 在您的虚拟环境中。它通常位于您的虚拟环境路径中,位于 site-packages 文件夹,类似于::
./.venv/lib/python3.9/site-packages/sitecustomize.py
在大多数情况下,该文件将不存在。如果它不存在,您可以通过以下方式创建:
$ touch .venv/lib/python3.9/site-packages/sitecustomize.py
将以下代码添加到文件中:
from rich.traceback import install
install(show_locals=True)
此时,将为在虚拟环境中运行的任何代码安装回溯。
备注
如果您计划共享您的代码,那么最好在您的主要入口点模块中包含回溯安装。
隐藏帧¶
如果您正在使用框架(Click、Django等),您可能只对在回溯中查看您自己的应用程序中的代码感兴趣。属性可以排除框架代码 suppress 辩论开始 Traceback , install , Console.print_exception ,以及 RichHandler ,它应该是模块或字符串路径的列表。
以下是您将如何排除 click 来自丰富异常:
import click
from rich.traceback import install
install(suppress=[click])
被抑制的帧将仅显示行和文件,不显示任何代码。
最大帧¶
递归错误可能会生成非常大的回溯,需要一段时间才能呈现,并包含大量重复的帧。里奇用一种 max_frames 参数,默认为100。如果回溯包含的帧超过100帧,则只会显示前50帧和后50帧。您可以通过设置来禁用此功能 max_frames 设置为0。
以下是打印递归错误的示例::
from rich.console import Console
def foo(n):
return bar(n)
def bar(n):
return foo(n)
console = Console()
try:
foo(1)
except Exception:
console.print_exception(max_frames=20)