导入自定义模块的过程中出现ModuleNotFoundError错误
python代码在导入自定义模块的过程中有时会出现ModuleNotFoundError
错误
出现这种情况一般出现在项目运行目录与自定义模块不在同级的情况下
|_programs
| |_foo.py
|_utils|——__init__.py|_util.py
其中utils为自定义模块,在foo.py中引入utils中的util文件有可能会报错
ModuleNotFoundError
错误
问题原因
因为在导包过程中,python解释器会搜索sys.path
中的所有路径,而sys.path
默认是指向当前执行的文件目录。
解决方法
将项目路径添加到需要引入自定义模块的文件中
import os
import sys
sys.path.insert[0, os.path.abspath(os.path.dirname(os.path.dirname(__file__)))]
os.path.dirname(__file__)
是当前脚本的路径,通过os.path.dirname
获取当前脚本的运行目录,再次调用获取项目根目录,并通过os.path.abspath
获取到绝对路径后添加到sys.path