从同一子目录导入模块时为何报错?正确导入方式是什么?
报错原因与正确导入方式
报错原因
直接
import bb找不到模块:
当你运行main.py时,Python的模块搜索路径会把main.py所在的目录作为根目录。此时aa.py里的import bb会让Python在main.py的目录下查找bb.py,而不是module_a目录里的bb.py,自然找不到。import .bb写法错误:
Python的相对导入语法不支持import .bb这种格式,必须使用from . import 模块名的形式,直接写import .bb会触发语法错误,根本无法正常执行。
正确的导入方式
方式一:相对导入(推荐,保持包内模块的关联性)
在aa.py里使用相对导入,语法如下:
from . import bb bb.xxx()
如果只需要调用bb.py里的特定函数,也可以直接导入函数:
from .bb import xxx xxx()
方式二:绝对导入(基于包名的全路径导入)
因为main.py所在目录在Python的搜索路径中,所以可以直接通过包名module_a来导入bb:
from module_a import bb bb.xxx()
内容的提问来源于stack exchange,提问作者Chen Ye
相关产品推荐
相关产品推荐

