安装keras_vggface后导入报错No module named 'keras.engine.topology'如何解决
问题产生原因
keras_vggface已停止维护多年,其代码仅适配Keras 2.2及更早的版本:旧版本Keras的Layer、get_source_inputs等核心组件均存放在keras.engine.topology模块下,而从Keras 2.3版本开始,该模块被官方重构,所有核心类迁移到了keras.engine.base_layer模块;如果当前环境使用的是TensorFlow内置的tf.keras(目前绝大多数Python环境的默认方案),模块路径规则和旧版独立Keras差异更大,就会直接触发找不到keras.engine.topology的报错。
修复方案
- 方案1:降级Keras版本(无需修改代码,适配速度最快)
仅适用于项目无高版本Keras/TensorFlow依赖的场景,执行以下命令安装兼容版本即可:pip install keras==2.2.4 - 方案2:手动修改keras_vggface源码(适配高版本Keras/tf.keras)
- 找到本地Python依赖库目录下的keras_vggface安装包,打开核心文件
vggface.py - 定位到导入语句
from keras.engine.topology import get_source_inputs,按实际使用的Keras版本替换:- 用独立Keras 2.3+版本:替换为
from keras.engine.base_layer import get_source_inputs - 用TensorFlow内置的tf.keras:替换为
from tensorflow.keras.utils import get_source_inputs
- 用独立Keras 2.3+版本:替换为
- 若仍有其他Keras路径相关报错,统一将文件中所有
keras.xxx前缀的导入语句,替换为你当前使用的Keras版本对应的路径即可。
- 找到本地Python依赖库目录下的keras_vggface安装包,打开核心文件
- 方案3:使用社区适配版安装包
目前有多位开发者发布了适配高版本Keras的keras_vggface修改版,你可以直接搜索下载安装适配版本,无需手动修改源码。
内容的提问来源于stack exchange,提问作者tewerty
相关产品推荐
相关产品推荐

