You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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.pydirections.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

火山引擎 最新活动