Python子模块__init__.py使用import语句导入类报错问题咨询
问题解决步骤
1. 修正初始化文件命名
你b/c/目录下的包初始化文件命名错误,当前是__init.py,必须修改为标准命名__init__.py(前后各两个下划线),否则Python不会将c识别为合法的包模块,这是触发ModuleNotFoundError的核心原因之一。
2. 修正b/c/__init__.py中的导入逻辑
二选一即可:
- 方案A:相对导入(包内导入优先推荐)
直接用相对路径指代当前包内的模块:
这里的from .x import SomeClient from .z import AnotherClient.代表当前c包的同级路径,不需要写完整前缀。 - 方案B:全路径绝对导入
从顶层包开始写全导入路径:from b.c.x import SomeClient from b.c.z import AnotherClient
3. 确认运行方式
执行test.py时,保证a文件夹的路径在Python的模块搜索路径中即可:
- 如果你在
a文件夹的同级目录下,可通过模块方式执行:python -m a.test - 如果你已经进入
a文件夹内,直接执行即可:python test.py
原报错原因说明
你之前写from c.x import ...时,Python会从模块搜索根路径下找顶层c包,而你的c包嵌套在b包下,根路径下没有独立的c包,因此报错找不到c模块。删除c.前缀后直接写from x import...,Python依然会从根路径搜索x模块,根路径下没有单独的x.py,因此也会报错。
内容的提问来源于stack exchange,提问作者xecute
相关产品推荐
相关产品推荐

