代码昨日正常今日报错:如何解决无法从keras.utils.layer_utils导入CallFunctionSpec?
问题描述
昨日运行正常的代码今日触发ImportError,代码如下:
from sklearn import metrics from tensorflow.keras.layers import Dense, Dropout, Activation, Flatten from tensorflow.keras.models import Sequential from tensorflow.python.keras.optimizers import Adam
错误栈信息:
ImportError Traceback (most recent call last) <ipython-input-71-00e64660885b> in <cell line: 2>() 1 from sklearn import metrics ----> 2 from tensorflow.keras.layers import Dense, Dropout, Activation, Flatten 3 from tensorflow.keras.models import Sequential 4 from tensorflow.python.keras.optimizers import Adam 7 frames /usr/local/lib/python3.9/dist-packages/keras/saving/legacy/saved_model/utils.py in <module> 28 from keras.utils import tf_contextlib 29 from keras.utils.generic_utils import LazyLoader ---> 30 from keras.utils.layer_utils import CallFunctionSpec 31 32 training_lib = LazyLoader("training_lib", globals(), "keras.engine.training") ImportError: cannot import name 'CallFunctionSpec' from 'keras.utils.layer_utils' (/usr/local/lib/python3.9/dist-packages/keras/utils/layer_utils.py)
未直接调用keras.utils模块,仅导入tensorflow.keras相关组件却触发该错误,且问题多次出现。
解决方法
- 修复版本冲突:该错误几乎都是独立安装的Keras与TensorFlow内置Keras版本不兼容导致的。卸载独立Keras并升级TensorFlow:
pip uninstall -y keras pip install --upgrade tensorflow - 清理缓存重装:若升级后问题仍存在,清理pip缓存并重新安装TensorFlow:
pip cache purge pip uninstall -y tensorflow pip install tensorflow - 统一导入规范:避免混合使用
tensorflow.keras和tensorflow.python.keras路径,将优化器导入改为统一格式:# 替换原导入行 from tensorflow.keras.optimizers import Adam - 确认环境正确性:如果使用虚拟环境,确保当前激活的是目标环境,未混用其他环境的依赖包。
内容的提问来源于stack exchange,提问作者Raga
相关产品推荐
相关产品推荐

