Jupyter Notebook报ModuleNotFoundError但命令行可正常导入模块
问题:Jupyter Notebook无法找到命令行Python环境已安装的模块
我通过pip安装了nb-black、black、seaborn等模块,在路径为/root/miniforge3/bin/python3的Python 3.7.6环境中,命令行可正常导入这些模块,但路径为/usr/local/bin/jupyter的Jupyter Notebook始终提示ModuleNotFoundError,且所有新安装的模块都存在这个问题。
命令行操作记录:
# python3 Python 3.7.6 | packaged by conda-forge | (default, Mar 23 2020, 22:25:07) [GCC 7.3.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import nb_black >>> # which python3 /root/miniforge3/bin/python3 # which jupyter /usr/local/bin/jupyter # python Python 3.7.6 | packaged by conda-forge | (default, Mar 23 2020, 22:25:07) [GCC 7.3.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import black >>> import nb_black >>>
原因分析
核心问题是Jupyter Notebook使用的Python环境与命令行的Python环境不一致。/usr/local/bin/jupyter属于系统或独立Python环境,而模块安装在/root/miniforge3/bin/python3对应的conda环境中,两者的包存储目录不共享。
解决方法
方法1:在conda环境中安装并启动Jupyter
- 激活目标conda环境:
source /root/miniforge3/bin/activate - 在该环境内安装Jupyter:
pip install jupyter - 使用该环境的Jupyter启动服务:
/root/miniforge3/bin/jupyter notebook
这种方式启动的Jupyter会直接绑定当前conda环境,所有已安装模块都能正常导入。
方法2:为Jupyter添加conda环境内核
无需重装Jupyter,直接给现有服务添加目标环境的内核:
- 激活conda环境:
source /root/miniforge3/bin/activate - 安装内核管理工具:
pip install ipykernel - 将当前环境注册为Jupyter内核:
其中python -m ipykernel install --user --name=miniforge_py37 --display-name="Python (miniforge3_py37)"miniforge_py37可替换为自定义的环境名称。 - 重启Jupyter Notebook,新建笔记本时选择
Python (miniforge3_py37)内核即可。
方法3:验证Jupyter的Python路径
先确认Jupyter当前使用的Python版本:
在Jupyter Notebook中执行代码:
import sys print(sys.executable)
如果输出不是/root/miniforge3/bin/python3,说明Jupyter绑定了其他环境。可通过修改Jupyter配置文件指定内核路径,但前两种方法更简单可靠,优先推荐。
内容的提问来源于stack exchange,提问作者shantanuo
相关产品推荐
相关产品推荐

