Python项目模块导入出现ModuleNotFoundError异常的求助
解决ModuleNotFoundError: No module named 'directions'的问题
问题成因
当你在weird_bug目录下运行main.py时,Python会把当前目录(weird_bug/)加入到模块搜索路径sys.path中。而你的weirdo.py位于model/子目录里,它尝试用from directions import Direction导入模块时,Python会在sys.path的根目录(也就是weird_bug/)里找directions.py,但这个文件实际在model/目录下,所以自然找不到,触发了模块未找到的错误。
两种可行的解决方案
方案1:使用相对导入
因为weirdo.py和directions.py在同一个model包目录下,你可以用相对导入语法,告诉Python在当前包内查找模块:
修改weirdo.py的导入语句为:
from .directions import Direction
这里的.代表当前目录,是Python相对导入的标准写法。
方案2:使用绝对导入
基于项目根目录(weird_bug/)做绝对导入,和main.py里的导入方式保持一致:
修改weirdo.py的导入语句为:
from model.directions import Direction
这样Python会从sys.path中的weird_bug/目录开始,找到model包,再导入其中的Direction类。
额外注意事项
为了让Python正确识别model作为一个包,建议在model目录下创建一个空的__init__.py文件(Python 3.3+支持命名空间包不需要这个文件,但显式添加能避免一些潜在问题)。
内容的提问来源于stack exchange,提问作者schickf




