You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Python自定义异常在回溯信息中显示的所属模块路径

解决方法

要实现回溯中仅显示MyPackage.MyError,按以下两步修改即可:

  1. 调整自定义异常的定义,在MyPackage/exceptions.py中手动指定__module__属性为顶层包名:
class MyError(Exception):
    __module__ = "MyPackage"
    pass
  1. 在包顶层的MyPackage/__init__.py中导入该异常,将其暴露为包的公开属性:
from .exceptions import MyError

# 可选:添加到__all__明确公开接口
__all__ = ["MyError"]

原理解释

Python回溯信息中展示的异常类路径,默认由异常类的__module__属性值加类名拼接生成,手动修改该属性为顶层包名即可调整展示效果。将异常导入包顶层__init__.py是为了符合通用的包使用习惯,用户可以直接通过from MyPackage import MyError导入异常,不需要感知内部的exceptions模块层级。

之前修改__module__不生效的常见原因是修改时机错误,必须在异常类的定义位置直接设置该属性,在其他模块导入后再修改不会生效。

内容的提问来源于stack exchange,提问作者Sue Dunham

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 13:39:02