同一conda虚拟环境下Jupyter Notebook导入skimage提示ModuleNotFoundError
问题根源
该报错的核心原因是Jupyter Notebook当前使用的内核对应的Python解释器,和你安装了skimage的虚拟环境的Python解释器不匹配,哪怕你启动Jupyter前已经激活了虚拟环境,也可能因为之前注册过其他内核导致默认调用的解释器不对。
解决步骤
第一步:确认解释器匹配情况
- 首先在报错的Jupyter Notebook cell中运行以下代码,打印当前使用的Python解释器路径:
import sys print(sys.executable)
- 再在可以正常导入skimage的conda命令行中运行完全相同的代码,对比两个输出的路径:
- 若路径不同:按下方内核注册方案修复
- 若路径相同:直接跳转到第三步的异常排查方案
第二步:内核不匹配的修复方案
你可以任选以下任意一种方式操作:
方式1:将虚拟环境注册为Jupyter内核
- 激活你安装了skimage的目标虚拟环境,命令示例(替换为你自己的环境名):
conda activate 你的虚拟环境名 - 在激活后的环境中安装ipykernel:
conda install ipykernel - 将当前环境注册到Jupyter内核列表中(替换为你自己的环境名,方便后续识别):
python -m ipykernel install --user --name=你的虚拟环境名 - 重启Jupyter Notebook,打开报错的文件后,点击顶部菜单栏「内核」→「更改内核」,选择你刚注册的对应虚拟环境内核即可。
方式2:直接在虚拟环境中启动Jupyter
- 激活安装了skimage的目标虚拟环境
- 直接在当前命令行执行启动命令:
jupyter notebook - 此时打开的Jupyter新建文件默认使用当前虚拟环境的解释器,无需额外切换内核。
第三步:解释器路径一致仍报错的异常排查
该情况大概率是环境中安装了名称混淆的无效包,按以下操作修复:
- 先卸载无效的同名包:
pip uninstall -y skimage - 重装官方的scikit-image包:
conda install scikit-image - 重启Jupyter内核后再次测试导入即可。
内容的提问来源于stack exchange,提问作者roudan
相关产品推荐
相关产品推荐

