同一虚拟环境下IPython可导入模块,Jupyter Notebook报ModuleNotFoundError
问题:虚拟环境中Jupyter Notebook无法导入已安装模块
- 创建虚拟环境:
$ python3 -m venv /home/jeanpat/Devel/icevision - 激活虚拟环境:
source /home/jeanpat/Devel/icevision/bin/activate - 在该环境下通过pip安装了
pycocotools等模块,IPython控制台可正常导入,但同一虚拟环境运行的Jupyter Notebook导入模块失败。 - 在Notebook单元格执行以下命令能查到模块信息:
输出结果:!pip freeze|grep pycocotoolspycocotools==2.0.4 - 虚拟环境下的jupyter路径信息:
输出结果:(icevision) jeanpat:~/ $ jupyter --pathsconfig: /home/jeanpat/.jupyter /home/jeanpat/Devel/icevision/etc/jupyter /usr/local/etc/jupyter /etc/jupyter data: /home/jeanpat/.local/share/jupyter /home/jeanpat/Devel/icevision/share/jupyter /usr/local/share/jupyter /usr/share/jupyter runtime: /home/jeanpat/.local/share/jupyter/runtime - 已尝试执行以下命令,但问题未解决:
$ ipython kernel install --name "icevision" --user
解决方案
确保内核绑定虚拟环境的Python解释器
激活虚拟环境后,先安装ipykernel:pip install ipykernel重新注册内核时指定虚拟环境的Python路径:
python -m ipykernel install --user --name=icevision --display-name="Python (icevision)"启动Jupyter Notebook后,在右上角内核选择器中切换到
Python (icevision)。验证Notebook使用的Python路径
在Notebook单元格中执行以下代码,确认路径是否为虚拟环境的Python路径(/home/jeanpat/Devel/icevision/bin/python):import sys print(sys.executable)若路径不符,说明内核未切换成功,重新执行第一步。
清理旧内核配置
如果存在旧的内核缓存,先删除对应目录:rm -rf ~/.local/share/jupyter/kernels/icevision再重新注册内核。
从虚拟环境直接启动Jupyter
激活虚拟环境后,安装Jupyter:pip install jupyter直接启动Notebook,此时会默认使用当前虚拟环境的Python环境:
jupyter notebook
内容的提问来源于stack exchange,提问作者Jean-Pat
相关产品推荐
相关产品推荐

