追踪
Rich 可以使用语法突出显示和格式来呈现 Python 回溯。与标准 Python 回溯相比,丰富的回溯更易于阅读并显示更多的代码。
若要查看 Rich 回溯的示例,请运行以下命令:
python -m rich.traceback
打印回落¶
该方法将打印当前正在处理的异常的回溯。下面是一个示例:
from rich.console import Console
console = Console()
try:
do_something()
except Exception:
console.print_exception(show_locals=True)
该参数使 Rich 显示回溯的每一帧的局部变量值。show_locals=True
有关更大的示例,请参阅 exception.py。
回溯处理程序¶
可以将 Rich 安装为默认回溯处理程序,以便呈现所有未捕获的异常并突出显示。方法如下:
from rich.traceback import install
install(show_locals=True)
有几个选项可用于配置回溯处理程序,有关详细信息,请参阅。
自动回溯处理程序¶
在某些情况下,您可能希望自动安装回溯处理程序,而不必担心在模块中导入代码。您可以通过修改虚拟环境中的 sitecustomize.py 来执行此操作。通常,它将位于虚拟环境路径中,在站点包文件夹下,如下所示:
./.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等),你可能只对在回溯中查看你自己的应用程序的代码感兴趣。您可以通过在回溯、安装、Console.print_exception和 RichHandler 上设置 suppress 参数来排除框架代码,该参数应该是模块或 str 路径的列表。
下面介绍了如何从富媒体资源异常中排除点击次数:
import click
from rich.traceback import install
install(suppress=[click])
抑制的帧将仅显示行和文件,而不显示任何代码。
最大帧数¶
递归错误可能会生成非常大的回溯,这些回溯需要一段时间才能呈现并包含大量重复帧。Rich 使用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)