TensorFlow2.9导入tensorflow.keras.applications报ImportError求助
导入报错排查说明
故障相关信息
- 运行代码:
from tensorflow.keras.applications import ResNet50 from tensorflow.keras.applications import InceptionV3 from tensorflow.keras.applications import Xception # TensorFlow ONLY from tensorflow.keras.applications import VGG16 from tensorflow.keras.applications import VGG19 from tensorflow.keras.applications import imagenet_utils from tensorflow.keras.applications.inception_v3 import preprocess_input from tensorflow.keras.preprocessing.image import img_to_array from tensorflow.keras.preprocessing.image import load_img import numpy as np import argparse import cv2
- 抛出错误:
from tensorflow.keras.applications import ResNet50 ImportError: No module named tensorflow.keras.applications
- 当前环境版本:
- TensorFlow版本:2.9.1
- tf.keras版本:2.9.0
故障产生原因
该报错和版本不匹配无关,TensorFlow 2.9.1内置的keras 2.9.0完全包含applications相关模块,常见触发原因有三类:
- 工作目录存在同名文件冲突:运行代码的文件夹下存在自定义命名为
tensorflow.py/keras.py的脚本,或同名文件夹,导致Python导入模块时优先加载本地文件,无法读取site-packages内的正式TensorFlow安装包 - Python解释器不匹配:安装TensorFlow的环境和运行代码的环境不是同一个,运行代码调用的解释器中TensorFlow安装不完整或为低版本
- 安装包损坏/包冲突:TensorFlow安装过程中文件缺失,或单独安装了独立Keras包,和TensorFlow内置的Keras模块产生导入路径冲突
解决步骤
按顺序执行以下操作,每步完成后测试导入是否正常:
- 清理本地冲突文件:检查代码所在工作目录,将所有命名为
tensorflow.py、keras.py的文件重命名为其他非包名的名称,删除目录下的__pycache__缓存文件夹。 - 校验解释器路径:在报错脚本最开头添加如下代码,运行后打印当前调用的Python解释器完整路径:
确认该路径和之前查询TensorFlow版本时使用的Python解释器路径完全一致,若不一致,在IDE运行配置中切换到已安装TensorFlow 2.9.1的对应环境。import sys print(sys.executable) - 卸载冲突包:执行命令卸载独立安装的Keras包,避免路径冲突:
pip uninstall -y keras - 修复损坏的TensorFlow安装:执行命令重装对应版本的TensorFlow,补全缺失的模块文件:
重装完成后可在Python交互环境直接执行pip uninstall -y tensorflow pip install tensorflow==2.9.1from tensorflow.keras.applications import ResNet50,无报错即修复完成。
内容的提问来源于stack exchange,提问作者Armand Assault
相关产品推荐
相关产品推荐

