如何让Typer的回溯信息恢复为常规Python样式
如何让Typer的回溯信息恢复为常规Python样式
嘿,这个问题我熟!Typer默认依赖Rich库来生成那种排版花哨、带颜色的错误回溯,要换回咱们熟悉的常规Python traceback,有几个简单实用的办法:
代码全局配置(长期生效)
如果你希望整个项目都默认用普通回溯,在初始化Typer应用的时候,把rich_tracebacks参数设为False就行:import typer # 关闭Rich美化的回溯信息 app = typer.Typer(rich_tracebacks=False) # 你的命令函数定义...环境变量临时关闭(单次生效)
不想改代码的话,直接在运行脚本前设置环境变量TYPER_NO_RICH_TRACEBACKS=1,这样这次运行就会输出常规的Python traceback了:TYPER_NO_RICH_TRACEBACKS=1 python scripts/add_priors.py这个方法特别适合临时调试的时候用,不用动项目代码。
手动捕获异常打印(特殊场景)
要是你只需要在特定代码块里用常规回溯,可以手动捕获异常后调用Python原生的traceback模块打印:import traceback import typer app = typer.Typer() @app.command() def main(): try: # 这里放你的业务代码,比如你用到的polars扫描逻辑 priors = ( pl.scan_ndjson(ndjson, infer_schema_length=10000) # ...后续处理 ) except Exception as e: # 打印常规Python traceback traceback.print_exc() # 退出程序并返回错误码 raise typer.Exit(code=1)
简单来说,前两种方法是最常用的——代码配置适合长期固定风格,环境变量适合临时调试需求,根据自己的场景选就行~
备注:内容来源于stack exchange,提问作者Cornelius Roemer
相关产品推荐
相关产品推荐

