ImportError:没有名为 scipy.sparse 的模块

Posted

技术标签:

【中文标题】ImportError:没有名为 scipy.sparse 的模块【英文标题】:ImportError: No module named scipy.sparse 【发布时间】:2019-07-29 08:08:52 【问题描述】:

我使用以下命令在 Ubuntu 上安装了 Scipy:

sudo apt-get install python-scipy
pip install scipy

但在运行导入时,我收到此错误:

ImportError: No module named scipy.sparse

我搜索并尝试了以下并重新安装了 Scipy:

sudo apt-get purge python-scipy

但仍然出现同样的错误。

更新:我没有在我的 python 文件中导入 scipy,只是导入了 keras。

这是错误信息:

(my_env)  ..  $ python test.py
Using TensorFlow backend.
Traceback (most recent call last):
  File "test.py", line 10, in <module>
    import keras
  File "/home/ ../my_env/lib/python3.5/site-packages/keras/__init__.py", line 3, in <module>
    from . import utils
  File "/home/ ../my_env/lib/python3.5/site-packages/keras/utils/__init__.py", line 27, in <module>
    from .multi_gpu_utils import multi_gpu_model
  File "/home/ ../my_env/lib/python3.5/site-packages/keras/utils/multi_gpu_utils.py", line 7, in <module>
    from ..layers.merge import concatenate
  File "/home/ ../my_env/lib/python3.5/site-packages/keras/layers/__init__.py", line 4, in <module>
    from ..engine.base_layer import Layer
  File "/home/ ../my_env/lib/python3.5/site-packages/keras/engine/__init__.py", line 8, in <module>
    from .training import Model
  File "/home/ ../my_env/lib/python3.5/site-packages/keras/engine/training.py", line 21, in <module>
    from . import training_arrays
  File "/home/../my_env/lib/python3.5/site-packages/keras/engine/training_arrays.py", line 8, in <module>
    from scipy.sparse import issparse
ImportError: No module named 'scipy.sparse'

【问题讨论】:

***.com/questions/2213551/installing-scipy-with-pip 你需要 libatlas-base-dev gfortran 向我们展示您的导入行、完整的错误回溯和您的项目文件结构。 @BalázsNagyillés 现在尝试了,同样的错误 @KlausD。问题已更新 在 SO 上,我们真的更喜欢文字而不是屏幕截图。 【参考方案1】:

在 Ubuntu/Debian 上:

sudo apt-get install python3-scipy

注意python 中的3,它对我有用。

【讨论】:

【参考方案2】:

scipy 路径混淆了。 卸载

pip uninstall scipy

使用 conda 安装对我有用

conda install scipy

【讨论】:

你也可以使用conda install -c conda-forge scipy【参考方案3】:

在 Ubuntu 18.04 及更高版本中,您可以使用 sudo apt install python3-scipy python3-keras 安装适用于 Python 3 的 Scipy 和 Keras,您会很高兴,但是您使用的是 Ubuntu 16.04,并且您安装了与 TensorFlow 不兼容的适用于 Python 2 的 Scipy Python 3.4、3.5 和 3.6,因此请使用以下命令安装 Python 3 的默认 Scipy 包:

sudo apt install python3-scipy  

有关在 Ubuntu 中安装 TensorFlow 的更多说明,请阅读 this answer。值得一读,因为从现在开始使用 TensorFlow 时,您将不得不检查软件包版本的兼容性。

如果该命令的目的是升级 Scipy,则命令 pip install scipy 也不正确。升级 Scipy 的正确命令应该是 pip install --upgrade --user scipy,即使这样它也没有用,因为您当前安装的 scipy 仅适用于 Python 2,而您的 TensorFlow 适用于 Python 3。

【讨论】:

pip install --upgrade --user scipy 解决了我的问题,谢谢。【参考方案4】:

只是为了确保您在终端中安装了 Scipy 的 Python 版本:

which Python

那就试试吧:

pip freeze 

获取所有已安装包的列表。

也许您有多个 python 版本,并且已将软件包安装到一个并尝试使用另一个执行您的代码。

【讨论】:

那么我认为您的 Scipy 安装出错了。这次尝试卸载安装wheel文件:lfd.uci.edu/~gohlke/pythonlibs/#scipy 执行 which python .. 但使用 python -- version .. pythn3.5.2 和 from pip freeze scipy==1.2.1 时没有显示 你试过通过wheel文件安装吗? 我也建议尝试安装 Anaconda 发行版。这将节省大量安装软件包和此类问题的时间。【参考方案5】:

试试

pip3 install scipy

并安装 pip3

sudo python3 get-pip.py

【讨论】:

【参考方案6】:

您使用的是 Python 3,但使用 pip 为 Python 2 安装了 scipy。 使用:

pip3 install scipy  

或:

sudo apt install python3-scipy

【讨论】:

【参考方案7】:

改为使用 pip 安装,运行:

pip install scipy

这对我有用,希望对你有帮助!

编辑:忘记您使用的是 python 3.x,改为运行:

pip3 install scipy

【讨论】:

以上是关于ImportError:没有名为 scipy.sparse 的模块的主要内容,如果未能解决你的问题,请参考以下文章

ImportError:没有名为枚举的模块

ImportError:没有名为“appdirs”的模块

ImportError:没有名为 websocket 的模块

ImportError:没有名为“backports”的模块

ImportError:没有名为 ghostscript 的模块

ImportError:运行火花时没有名为请求的模块