You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

引入不可pip安装的git子模块后导入包报ModuleNotFoundError如何解决

问题排查与解决方案

操作正确性确认

你的git初始化、添加子模块、给sys.path追加子模块路径的操作都完全正确,没有操作失误。

报错根因

你引入的keras-deep-graph-learning仓库最后更新时间较早,适配的是旧版本Keras(2.3及更早版本)。在Keras 2.4+以及被整合进TensorFlow的tf.keras版本中,keras.engine.topology模块已经被废弃,原有的Layer类迁移到了keras.engine.base_layer路径下,因此触发了模块找不到的报错。

可用解决方法

方案1:修改仓库源码(优先推荐,不影响现有环境)

  • 打开报错指向的文件:keras-deep-graph-learning/keras_dgl/layers/graph_cnn_layer.py
  • 将第4行的导入语句:
from keras.engine.topology import Layer

替换为以下任意一种写法即可:

# 写法1:适配新版原生Keras
from keras.engine.base_layer import Layer
# 写法2:适配tf.keras
from tensorflow.keras.layers import Layer
  • 检查同目录下其他层文件(如multi_graph_cnn_layer.py、graph_attention_cnn_layer.py等),只要存在from keras.engine.topology import Layer的语句都做相同修改,即可解决该报错。

方案2:降级Keras版本

如果不想修改源码,可将环境的Keras版本降级到2.3.1,同时配套安装TensorFlow 2.0.x版本即可兼容该仓库的原有代码。该方案的缺点是可能会影响你其他依赖高版本TensorFlow/Keras的项目运行。


内容的提问来源于stack exchange,提问作者yihao ren

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 12:36:03