问题起因
在configs的配置文件中,加入了自定义的导入包,例如:
custom_imports = dict(
allow_failed_imports=False,
imports=[
'custom_pack',
])
而custom_pack文件夹已经正确置于mmsegmentation目录下。此时使用该配置文件进行训练,报错信息如下
ImportError: Failed to import custom modules from {'allow_failed_imports': False, 'imports': ['custom']}, the current sys.path is:
You should set `PYTHONPATH` to make `sys.path` include the directory which contains your custom module
按照报错字面意思,是包的位置不正确,没有放在系统路径或当前路径下。然而实际上,包内代码本身存在错误也会引发该问题。
问题复现
例如,我们在mmsegmentation/custom_pack/init.py文件中加入以下一行代码:
from abcde import abcde
这里的abcde包是乱编的,也就是在import custom_pack这个包的同时,包内的代码逻辑存在import错误,import了未安装的包,此时也会引发ImportError: Failed to import custom modules from {‘allow_failed_imports’: False, ‘imports’: [‘custom’]}。
一种可能的解决方案
解决方法是检查自定义包内的代码逻辑中是否有其他未安装的包,并使用pip进行安装。