绝大多数情况是导入方式错误或环境冲突导致的假性失败,唯一推荐路径是from tensorflow import keras;tensorflow 2.6+已移除对独立keras包的依赖,pip list中不应存在keras或keras-nightly。

TensorFlow 安装后无法引用 keras 模块,绝大多数情况不是没装好,而是导入方式、环境冲突或命名污染导致的假性失败——from tensorflow import keras 才是唯一推荐路径,import keras 在 TensorFlow 2.6+ 中已不被支持且极易出错。
为什么 import keras 会报 ModuleNotFoundError
TensorFlow 2.6 起完全移除了对独立 keras 包的运行时依赖,所有 Keras API 都通过 tf.keras 提供。如果你之前执行过 pip install keras,它会:
- 覆盖 tf.keras 的模块结构,导致 from tensorflow import keras 实际导入的是独立包而非 TensorFlow 内置实现
- 引发版本错位,例如 tf.keras.layers.LayerNormalization 在独立 keras 包中可能根本不存在
- 和 tensorflow==2.10+ 产生符号冲突,pip check 会直接报红
你看到的 No module named 'keras',往往是因为卸载了独立包但残留了 __pycache__ 或 IDE 缓存,误判为“没装”
如何验证是不是真的没装成功
别信 IDE 报红,用 Python 解释器直连验证:
- 运行 python -c "import tensorflow as tf; print(tf.keras.__name__, tf.__version__)",能输出 tensorflow.python.keras 2.13.0 类似内容,说明 tf.keras 已就位
- 如果报 AttributeError: module 'tensorflow' has no attribute 'keras',说明你装的是 TensorFlow 1.x 或损坏安装,必须重装
- 若输出正常但 PyCharm/VS Code 仍标红,大概率是 lazy-load 导致的 IDE 解析延迟(tf.keras 是运行时按需加载),不是真实错误
最常踩的三个坑
- 项目目录下存在名为 keras.py 的文件,Python 优先导入本地同名模块,直接屏蔽 tf.keras
- 使用了 from keras import layers 这类旧式写法,TensorFlow 2.10+ 不再保证兼容,应统一改为 from tensorflow.keras import layers
- 在虚拟环境中混装了 keras-nightly(尤其曾手动装过 tensorflow==2.5.0),该包已从 PyPI 下线,强行保留会导致 pip install 卡死或降级核心组件
真正要盯住的只有一件事:确保 pip list 输出里没有 keras 或 keras-nightly,只有 tensorflow;然后所有代码里删掉 import keras,只用 from tensorflow import keras。其余所谓“重装镜像源”“降级 Python”都是绕开问题的临时补丁,掩盖了模块路径污染这个根因。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!











