今天在调通代码时遇到一个难缠的bug,源代码如下:
from .common import _FLOATX, _EPSILON
结果报错:
问题原因:
也就是说,这是相对导入,只有在父模块在当前运行环境中被导入过才能用。
这揭示了报错的缘由,相对导入基于当前模块的名称,因为主模块总被命名为"main"。当我们从主模块启动时,Python就识图用"main"替换".",于是那句话实际便成了from main.commom import common,这当然是找不到的。
我的目录:
解决方法:
将引用语句改为:
from keras.backend.common import _FLOATX, _EPSILON
问题解决