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

运行Airflow时报ModuleNotFoundError: No module named 'keras.api'如何解决

问题根因

你遇到的报错并非来自你的业务代码,是Keras版本和环境内TensorFlow版本不兼容导致的:

  • 你指定安装的Keras 2.3.1为较老的独立Keras版本,仅适配TensorFlow 1.15.x版本
  • 堆栈最后一行可以看到报错触发点在Keras自身的metrics.py文件内,调用tf.keras.metrics.MeanIoU时,环境内的TensorFlow实际为2.x版本,2.x版本内置的Keras模块路径使用keras.api结构,和旧版独立Keras 2.3.1的预期路径不匹配,因此抛出找不到keras.api的错误
  • 你安装的apache-airflow 1.10.9的依赖链会自动拉取更高版本的TensorFlow,覆盖了Keras 2.3.1要求的版本范围,导致版本冲突
修复方案
  • 方案1(推荐,兼容性最好):在Dockerfile的Keras安装语句前锁定TensorFlow版本,匹配Keras 2.3.1的要求:
    RUN pip install "tensorflow==1.15.5"
    RUN pip install "Keras==2.3.1"
    RUN pip install "apache-airflow[celery,devel,postgres,redis,s3,ssh]==1.10.9"
    RUN pip install "keras-models==0.0.7"
    
  • 方案2(适配新版本):如果业务允许升级依赖,将Keras升级到适配TensorFlow 2.x的版本,同时对应安装匹配的TensorFlow版本,例如:
    RUN pip install "tensorflow==2.8.0"
    RUN pip install "Keras==2.8.0"
    RUN pip install "apache-airflow[celery,devel,postgres,redis,s3,ssh]==1.10.9"
    RUN pip install "keras-models==0.0.7"
    
    注意安装后需要测试keras-models 0.0.7是否能正常适配高版本Keras
  • 方案3(临时热修复):不需要修改依赖,在服务导入任何Keras相关模块的入口最开头加入路径映射补丁:
    import sys
    from tensorflow import keras
    sys.modules['keras.api'] = keras
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 12:45:00