Python跨文件夹导入类报错ModuleNotFoundError: No module named 'connections'求助
报错原因分析
- 你的
Connections.py和LogObserver.py属于同级文件,你写的导入语句from connections.Connections import Connections是把connections作为父级包处理,但当前同级目录下没有名为connections的文件夹,也没有做对应包声明,Python无法找到对应模块。 - 模块导入大小写匹配问题:你的文件名为
Connections.py(首字母大写),但导入语句里写的是小写connections,在Linux、MacOS等大小写敏感的系统中,即便包结构正确,大小写不匹配也会触发导入报错。
解决方法
方法1:同级文件直接导入(适配当前项目结构,操作最简单)
直接修改LogObserver.py中的导入语句即可:
from Connections import Connections class LogObserver: # 后续类实现代码
方法2:保留原有导入格式的调整方案
如果你需要保持from connections.Connections import Connections的导入写法,按以下步骤调整项目结构即可:
- 在当前两个文件所在的目录下,新建名为
connections的文件夹(全小写,和导入语句的包名保持一致) - 把
Connections.py移动到新建的connections文件夹中 - 在
connections文件夹内新建一个空的__init__.py文件,声明该文件夹为Python可识别的包 - 调整后原有导入语句可正常运行
方法3:临时适配方案(仅推荐调试场景使用)
如果不想修改文件结构和导入语句,可以在LogObserver.py最开头添加代码,把当前文件所在目录加入Python模块搜索路径:
import sys import os sys.path.append(os.path.dirname(os.path.abspath(__file__))) from Connections import Connections
注意事项
- 运行脚本时建议在
LogObserver.py所在的同级目录执行python LogObserver.py,避免运行入口层级不对导致模块搜索路径匹配失败。
内容的提问来源于stack exchange,提问作者user15564093
相关产品推荐
相关产品推荐

