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

Python从子文件夹导入模块时,同级模块导入失败问题求助

问题解决:ModuleNotFoundError: No module named 'common'

问题背景

文件夹结构:

ABC
|--db
|   |-- __init__.py
|   |-- post.py
|   |-- common.py
|   |-- connection.py
|-- __init__.py
|-- main.py
  • main.py中执行from db import post导入db下的post模块
  • post.py中尝试from common import table_insert,get_row导入同级的common模块,运行时触发ModuleNotFoundError
  • 已知/home/user/ABC已在sys.path中,所有__init__.py为空

原因分析

运行main.py时,Python的模块搜索范围是sys.path中的目录(这里是ABC目录)。直接写from common import...会让Python在ABC目录下找common.py,但实际common.py在db子目录里,因此找不到模块。

可行解决方案

方案1:使用相对导入

修改post.py中的导入语句为:

from .common import table_insert, get_row

这里的.代表当前模块所在的包(即db包),告诉Python从同级目录下导入common模块。

方案2:使用绝对导入

基于已在sys.path中的ABC目录,使用完整的包路径导入:

from db.common import table_insert, get_row

这种写法明确指定从db包下导入common模块,Python会直接在sys.path的ABC目录中找到db.common模块。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 10:32:04