Jupyter Notebook导入SciPy、NumPy报错的技术求助
解决Jupyter Notebook中SciPy/NumPy导入报错但终端正常的问题
这种情况我之前也碰到过,明明环境版本完全一致,Jupyter却出现奇怪的报错,大概率是Jupyter的路径匹配、缓存或者文件冲突问题,咱们一步步来排查解决:
1. 确认Jupyter实际使用的Python路径
有时候你激活了目标虚拟环境,但Jupyter加载的kernel并不是这个环境的。在Jupyter Notebook里运行以下代码:
import sys print(sys.executable)
然后在已经激活MachineL环境的终端里运行:
# Windows系统 where python # Linux/macOS系统 which python
对比两者的输出路径,如果不一样,说明Jupyter的kernel没对应上。解决方法是在你的虚拟环境里安装并注册对应kernel:
conda activate MachineL pip install ipykernel python -m ipykernel install --user --name MachineL --display-name "Python (MachineL)"
之后重启Jupyter,选择Python (MachineL)这个kernel再运行代码。
2. 检查工作目录是否有同名文件
如果你的notebook所在文件夹里,存在自己创建的numpy.py、scipy.py或者对应的.pyc缓存文件,会直接覆盖系统的官方模块,导致这类奇怪的报错。
检查当前Jupyter首页显示的工作目录,如果有这类文件,直接删除,然后重启Jupyter。
3. 清除模块缓存并重启Jupyter
Jupyter会缓存已加载的模块,即使环境没问题,缓存损坏也会导致报错:
- 完全关闭Jupyter Notebook服务器(包括浏览器标签和终端里的进程)
- 删除虚拟环境中SciPy和NumPy目录下的
__pycache__文件夹(比如~\Anaconda3\envs\MachineL\lib\site-packages\numpy\__pycache__) - 重新启动Jupyter,再测试导入代码
4. 重新安装SciPy和NumPy(兜底方案)
如果上面的方法都没用,可能是包的安装文件损坏了,虽然版本一致,但重新安装可以修复:
conda activate MachineL pip uninstall numpy scipy -y pip install numpy==1.18.5 scipy==1.3.1 # 对应你终端里的版本
安装完成后重启Jupyter再测试。
内容的提问来源于stack exchange,提问作者Kampet
相关产品推荐
相关产品推荐

