Python终端可导入包但Spyder中无法导入的问题求助(Python 3.6.3)
解决方案:Spyder与终端Python环境不一致导致的包导入问题
咱们先明确核心原因:你遇到的两个问题,本质都是Spyder和系统终端使用的不是同一个Python环境,或者Spyder的sys.path没有包含终端环境里的包路径,再加上scipy版本差异的问题。下面分问题给你具体解决步骤:
一、解决Spyder中导入keras的ModuleNotFoundError
1. 先确认两个环境的Python路径
- 在系统终端输入:
记下终端使用的Python完整路径(比如# Linux/macOS which python # Windows where python/usr/local/bin/python3.6)。 - 在Spyder的IPython控制台输入:
对比两个路径,如果不一样,说明Spyder用的是独立的Python环境,这就是问题所在。import sys print(sys.executable)
2. 让Spyder切换到终端的Python环境
- 打开Spyder,点击顶部菜单栏的
Tools > Preferences > Python interpreter - 选择
Use the following Python interpreter,粘贴你刚才从终端查到的Python路径,点击Apply后重启Spyder。
3. 若路径一致仍找不到keras,手动添加包路径
- 在终端输入
pip show keras,找到输出里的Location字段(比如/usr/local/lib/python3.6/site-packages)。 - 在Spyder控制台临时添加路径:
import sys sys.path.append("/usr/local/lib/python3.6/site-packages") # 替换成你的实际路径 import keras # 现在再尝试导入 - 要是想永久添加这个路径,找到Spyder的用户站点包路径:
在这个路径下创建或编辑import site print(site.getusersitepackages())sitecustomize.py文件,把sys.path.append("你的keras安装路径")写进去,保存后重启Spyder即可。
二、解决scipy.misc.imsave的AttributeError
新版本的scipy已经移除了scipy.misc.imsave这个方法,而你终端里的scipy版本可能比较旧,所以能正常运行,Spyder里的scipy版本更新了就报错。有两个解决办法:
1. 使用替代方法(推荐)
可以用PIL.Image.save()或者matplotlib.pyplot.imsave来替代,示例代码如下:
- 用PIL保存:
from PIL import Image # 假设your_image_array是你的图像数组 img = Image.fromarray(your_image_array) img.save("output_image.png") - 用matplotlib保存:
import matplotlib.pyplot as plt plt.imsave("output_image.png", your_image_array)
2. 降级scipy到保留imsave的版本
如果你一定要用原来的方法,可以安装scipy 1.2.1版本(这个版本还保留scipy.misc.imsave):
pip install scipy==1.2.1
注意要确保Spyder用的是和终端一致的pip环境,不然还是会有问题。
额外检查
如果切换环境后还是有问题,确认Spyder的pip和终端的pip是同一个:
- 在Spyder控制台输入:
import pip; print(pip.__file__) - 在终端输入:
pip --version
对比两者的路径,如果不一样,说明环境还没对齐,再重新检查第一步的Python解释器设置。
内容的提问来源于stack exchange,提问作者kaanyilmaz
相关产品推荐
相关产品推荐

