当深度学习项目在训练时,会报如下错误ModuleNotFoundError: No module named 'xxx',xxx一般为我们的自建项目名。
原因如下:
在IDE中执行python程序,编译器会自动把当前项目的根目录加入到包查找路径中,可以理解为加到PYTHONPATH下,所以直接执行是没有问题的。但是在cmd或者terminal控制台中直接使用python相关命令来执行程序,不会自动将当前项目加入到PYTHONPATH环境变量下,如果涉及到import其他文件夹下的变量就会报类似ImportError: No module named xxx这样的错误。
简单来讲一般发生这种情况是因为我们还没有运行过此项目
项目结构如下
├──examples
│ ├── test.py
│ ├── train.py
└──
├──hhcl
│ ├── __init__.py
│ ├── trainers.py
└──
├──README.md
├──__init__.py
我们一般通过运行examples文件夹下的train.py来训练模型
解决方法为:
在报错的
from hhcl import xxx
前一行加上
# 把当前文件所在文件夹的父文件夹路径加入到PYTHONPATH
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
即可解决问题