VS Code导入keras_vggface时报keras.engine.topology模块缺失错误
问题场景
在VS Code的PowerShell虚拟环境中编写Python代码,调用TensorFlow与keras_vggface库,测试代码如下:
from tensorflow.keras.preprocessing import image from keras_vggface.utils import preprocess_input from keras_vggface.vggface import VGGFace
运行代码时抛出异常无法正常执行,完整报错信息如下:
Traceback (most recent call last): File "src/02_feature_extractor.py", line 7, in <module> from keras_vggface.utils import preprocess_input File "C:\Users\shana\Desktop\face_match\env\lib\site-packages\keras_vggface\__init__.py", line 1, in <module> from keras_vggface.vggface import VGGFace File "C:\Users\shana\Desktop\face_match\env\lib\site-packages\keras_vggface\vggface.py", line 9, in <module> from keras_vggface.models import RESNET50, VGG16, SENET50 File "C:\Users\shana\Desktop\face_match\env\lib\site-packages\keras_vggface\models.py", line 20, in <module> from keras.engine.topology import get_source_inputs ModuleNotFoundError: No module named 'keras.engine.topology'
故障原因
原版keras_vggface库已长期停止维护,代码内的导入逻辑适配的是TensorFlow 1.x时代的独立Keras包,当前环境使用的是TensorFlow 2.x内置的tf.keras,旧版Keras的keras.engine.topology模块在新版中已经迁移路径,因此触发模块找不到的报错。
解决步骤
注意:操作前请确认已经在PowerShell中激活了项目对应的face_match虚拟环境,避免依赖安装到全局Python环境
- 执行命令卸载当前环境中不兼容的原版库:
pip uninstall -y keras keras-vggface
- 执行命令安装适配TensorFlow 2.x的维护版本,该版本已修复所有旧版导入路径不兼容问题:
pip install keras-vggface-tf2
- 安装完成后无需修改原有业务代码,直接重新运行脚本即可正常调用VGGFace相关接口。
手动修复方案(不推荐):如果不想替换安装包,可直接修改虚拟环境目录下的库源码:打开路径
C:\Users\shana\Desktop\face_match\env\lib\site-packages\keras_vggface\models.py,将第20行的from keras.engine.topology import get_source_inputs替换为from tensorflow.keras.utils import get_source_inputs,同时将该库所有文件中from keras.开头的导入语句统一替换为from tensorflow.keras.即可。该方案需要逐行排查修改所有不兼容导入,后续库重装会丢失修改,优先选择安装适配版本的方案。
内容的提问来源于stack exchange,提问作者Shanu
相关产品推荐
相关产品推荐

