jupyter notebook中import keras报modulenotfounderror,根本原因是kernel未绑定到安装keras的python环境;需先在目标环境(如conda activate keras-env)中安装keras及tensorflow,再执行python -m ipykernel install --user --name keras-env注册kernel,最后在notebook中kernel→change kernel手动选择该环境。

直接装 keras 包进系统 Python 或默认 conda 环境,Jupyter Notebook 通常识别不到——因为 kernel 没绑定,不是路径问题,是执行环境隔离问题。
为什么在 Jupyter 里 import keras 会报 ModuleNotFoundError
常见错误现象:ModuleNotFoundError: No module named 'keras' 或更隐蔽的 No module named 'tensorflow.python.eager'。这不是没装,而是 Jupyter 当前 kernel 启动时用的 Python 解释器,压根不是你装了 keras 的那个环境。
根本原因:Jupyter 的每个 kernel 是独立注册的,它不自动感知你当前终端激活的 conda 环境。哪怕你在 conda activate myenv 后 pip install keras,Jupyter 仍可能跑在 base 环境或旧 kernel 上。
关键动作必须做两步:先确保 keras(及依赖如 tensorflow)装在目标环境里;再把该环境显式注册为 Jupyter kernel。
conda 创建环境 + 注册 kernel 的标准流程
这是最稳、最不易出错的方式,尤其适合初学者或需要多版本共存的场景:
- 用
conda create -n keras-env python=3.9新建干净环境(推荐 3.8–3.10,避开 3.11+ 尚未广泛适配的坑) - 激活:
conda activate keras-env - 装核心包(注意顺序和版本对齐):
pip install tensorflow==2.15.0→pip install keras==2.15.0(二者必须同主版本号,否则 eager 初始化失败) - 装 kernel 支持:
pip install ipykernel - 注册进 Jupyter:
python -m ipykernel install --user --name keras-env --display-name "Python (keras-env)"
完成后重启 Jupyter Notebook,在右上角 Kernel → Change kernel 菜单里就能看到新条目。选中后,import keras 就不会报错了。
pip 安装 keras 后 kernel 不生效的典型陷阱
容易踩的坑:
- 在 base 环境下运行
python -m ipykernel install,结果注册的是 base 的 kernel,但你实际想用的是另一个环境 - 装了
keras却没装tensorflow(Keras 2.14+ 默认后端是 TF,不装会 import 失败) - 用
conda install keras但没指定 channel,conda 可能拉取过旧版或非官方构建,与 pip 版本混用易冲突 - Jupyter 已打开,注册 kernel 后没重启 notebook 页面——Kernel 菜单不会自动刷新,必须手动重启或新建 tab
验证是否真生效?在 notebook 单元格里运行:import sys; print(sys.executable),输出路径应和你 conda activate keras-env 后终端里 which python 的结果一致。
Windows 下常见报错:'jupyter' 不是内部或外部命令
这说明 Jupyter 本身没装进当前环境,或 PATH 没导出:
- 不要全局装 Jupyter(比如在 base 里 pip install jupyter),而应在目标环境里装:
conda activate keras-env && pip install jupyter - 如果用 conda 安装,确保已添加清华源:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ - 检查
Scripts目录是否在系统 PATH 中(Windows 默认 conda 环境的 Scripts 在...\envs\keras-env\Scripts)
最简兜底方案:不依赖命令行启动,直接在激活环境后运行 python -m jupyter notebook,它强制使用当前 Python 解释器启动服务。
真正卡住人的从来不是“怎么装”,而是“哪个环境装了、哪个 kernel 在跑、哪个解释器在执行”这三者没对齐。每次换环境,务必确认 sys.executable 和 pip list 输出一致——这是唯一可信的判断依据。











