scipy出错:没有名为`imsave`的模块

时间:2017-04-25 17:28:52

标签: python scipy python-imaging-library

我正在使用scipy模块的imreadimsave实用程序。我收到以下错误:

  

没有名为imsave的模块。

我做了一点谷歌搜索,并认为错误是由于没有安装PIL / Pillow。我这样做:

sudo pip install Pillow.

我收到以下消息:

  

要求已经满足:/usr/local/lib/python2.7/dist-packages中的枕头。

我正在导入scipy的misc功能以使用imread和imsave功能。

    import scipy.misc
    import numpy as np
    I = np.load('image.npy')
    scipy.misc.imsave('test_image.jpg',I) #The error pops up here
    J = scipy.misc.imread('test_image.jpg')

此后我重新安装了scipy。我仍然得到名为error的No模块。

编辑1:为了清楚起见,我按照这个link卸载了PIL。然后我卸载了scipy。但是,当我运行sudo apt install python-scipy python-pil时,它说pil已经是最新的了。但是,它不在路径/usr/local/lib/python2.7/dist-package中。

编辑2:回答Mark Mikofski的问题: 我在终端使用Python。我从终端运行该文件。

    `which python` 

给我以下输出

    `/home/raghuram/bin/python`. 

导入sys并执行您告诉的操作会给出以下输出列表:

    /home/raghuram/lib/python2.7
    /home/raghuram/lib/python2.7/plat-x86_64-linux-gnu
    /home/raghuram/lib/python2.7/lib-tk
    /home/raghuram/lib/python2.7/lib-old
    /home/raghuram/lib/python2.7/lib-dynload
    /usr/lib/python2.7
    /usr/lib/python2.7/plat-x86_64-linux-gnu
    /usr/lib/python2.7/lib-tk
    /home/raghuram/local/lib/python2.7/site-packages
    /home/raghuram/lib/python2.7/site-packages

Scipy的版本是0.19.0

2 个答案:

答案 0 :(得分:1)

@Raghuram

欢迎使用StackOverflow!感谢您提出问题,希望您能找到答案。以下是asking questions from the StackOverflow help center的一些链接:

建议的解决方案

根据您的回答,您似乎没有在/usr/lib/python2.7中使用系统Python,并且使用--prefix installation scheme将您的软件包安装到/home/raghuram/home/raghuram/local/。< / p>

不幸的是,如果获得--install-option,pip将不会使用轮子,因此您必须先安装BLAS。

$ sudo apt install gfortran libblas-dev liblapack-dev libatlas-dev

然后尝试使用--install-option with pip传递--prefix选项进行安装。

$ pip install --install-option="--prefix=/home/raghuram/" numpy scipy pillow

另一个可能更容易的选择是查看你的python解释器认为站点包应该去哪里。为此,import site and call site.getsitepackages()。如果/home/raghuram在该列表中,那么您可以使用-m选项从Python调用pip作为模块。

$ python -m pip install numpy scipy pillow

最后,如果所有其他方法都失败了,你可以退回到distutils,但这很棘手,因为你无法混合scipy / numpy BLAS依赖项。它们只能是ATLAS,OpenBLAS,MKL等,而不是混合物。要查看您的使用情况,请先import scipy numpy,然后致电numpy.show_configs()scipy.show_configs()。从这里开始变得更加棘手,因为你需要编辑setup.cfg告诉你BLAS所在的numpy / scipy,所以让我们假设你可以删除这两个并从头开始。首先从发行版的repo中安装依赖项;我认为默认情况下它们总是用ATLAS构建。

$ sudo apt install gfortran libblas-dev liblapack-dev libatlas-dev

然后从PyPI下载numpy和scipy zip文件并解压缩。对于每个您需要输入解压缩的文件夹并运行:

$ python setup.py install --prefix=~

现在尝试像他们的帮助docstring示例一样使用scipy.misc.imsave

>>> import numpy as np
>>> from scipy.misc import imsave
>>> help(imsave)  # view docstring
>>> # then hit q key to return to interpreter
>>> x = np.zeros((255, 255))
>>> x = np.zeros((255, 255), dtype=np.uint8)
>>> x[:] = np.arange(255)
>>> imsave('gradient.png', x)    
>>> rgb = np.zeros((255, 255, 3), dtype=np.uint8)
>>> rgb[..., 0] = np.arange(255)
>>> rgb[..., 1] = 55
>>> rgb[..., 2] = 1 - np.arange(255)
>>> imsave('rgb_gradient.png', rgb)

NB :您始终可以搜索Ubuntu packages online或使用apt search

PS IMO你应该删除你使用sudo pip安装到系统python的任何软件包,IMO再也不会这样做了。签入/usr/local/lib/python2.7/dist-packages

PPS恕我直言,你应该永远使用sudo在Linux上安装Python软件包,而不是使用aptyum从发行版的软件存储库安装,使用pip --user选项安装或使用virtualenv创建Python虚拟环境。请参阅my AskUbuntu answer

答案 1 :(得分:1)

尝试通过以下方式通过Pillow安装conda

conda install Pillow