Jupyter Error - ModuleNotFoundError: No module named 'xxx'
写在前面
首先,前提是我们希望一个项目中的 jupyter notebook 使用当前项目运行环境作为核,即以项目运行环境作为 .ipynb 文件的运行环境。
在 PyCharm(+Anaconda 配置环境) 上用 Jupyter Notebook 画 matplotlib 图时,遇到一个奇怪的问题:import matplotlib
语句没有波浪线提示错误,但运行时报错 ‘ModuleNotFoundError’。
这个错误原因很简单,但误导性很强,因为它不是提示「当前项目环境」没有安装 ‘matplotlib’ 包(如果真的没有安装,编辑器会给出红色波浪线提示,检查当前运行环境也发现已经安装了声称缺失的包),而是「当前 jupyter 所使用的环境」没有安装 ‘matplotlib’ 包。是的,在 Pycharm 上,jupyter 的运行环境可以不是当前项目所使用的环境。因此,当前项目配置的环境里没有安装 ‘jupyter’ 包,这个时候 Pycharm 会另外随机选择一个安装有 ‘jupyter’ 包的环境给 jupyter notebook(.ipynb文件) 运行。
如下图,点击右侧的下拉框,可选择 jupyter 运行的核
相关的小知识点:
-
Jupyter Notebook 需要 jupyter 包作为运行的核。
-
PyCharm(包括其他IDE)编辑器上波浪线报错,一种是编辑器根据「索引的依赖文件」来判断的依赖文件不存在产生的错误,另一种是 IDE 可判断的一些常见的语法错误。
-
PyCharm 上,jupyter 的运行环境可以不是当前项目所使用的环境。
解决步骤 - 如何使用 PyCharm 写 jupyter notebook
注意:本文是在 PyCharm + Anaconda 环境下进行操作。
-
左侧 Project 栏 → 右键 新建 Jupyter Notebook
-
两种方法,任选其一
① 进入刚才创建的 .ipynb 文件 → 点击编辑区上侧黄色提示区的 ‘Install jupyter package’ 安装 jupyter 包
② 打开 PyCharm 内置的 Terminal(手动 View → Tool Windows → Terminal)→ 执行
conda install jupyter
-
安装结束,PyCharm 重新索引文件(右下角)结束后,OVER!
注意,如果采用上面第 2 步的方法1,由 PyCharm 自动安装jupyter包,安装完成后 PyCharm 会自动重新索引文件;如果是使用方法2,则 PyCharm 无法自动感知包已经安装完成,需要把光标点到「代码编辑区」(写代码的区域)来激活它,这时候 PyCharm 才会检查依赖文件是否发生变化,并开始重新索引文件。