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

Python导入报错AttributeError: module 'mod.what' has no attribute 'yo'求解

报错原因
  • Python导入包时不会自动递归加载所有下级子模块。执行from mod import what时仅加载了mod/what/__init__.py对应的包对象,yo.py作为what包下的子模块未被显式导入时,不会自动成为what包的可访问属性,因此访问what.yo会抛出AttributeError。
  • 之前可以正常运行的from mod.what import yo写法是直接指定加载yo子模块,因此可以正常访问模块内的类。
解决方案

要实现what.yo.Yo这种层级访问形式,只需要在对应包的__init__.py中显式导入需要对外暴露的子模块或类即可,无需在业务代码中逐个导入冗余子模块:

  1. 编辑mod/what/__init__.py,添加如下代码将yo模块暴露到what包的命名空间:
from . import yo
# 如果需要更短的访问路径,直接把Yo类暴露到what包下,可额外添加这行,后续即可直接用what.Yo访问类
# from .yo import Yo
  1. 如果有更深层级的模块需要暴露,遵循相同逻辑在对应层级的__init__.py中导入即可。比如需要mod包直接暴露what模块,可在mod/__init__.py中添加from . import what。

这种方案仅需在包配置文件中统一维护对外暴露的内容,即可满足通过包层级路径直接访问下层类的需求。

内容的提问来源于stack exchange,提问作者Pavel Komarov

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 07:06:04