ImportError:无法导入名称NUMPY_MKL

时间:2016-05-17 04:52:01

标签: python windows python-2.7 numpy scipy

我正在尝试运行以下简单代码

import scipy
scipy.test()

但是我收到以下错误

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python27\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 586, in runfile
    execfile(filename, namespace)
  File "C:/Users/Mustafa/Documents/My Python Code/SpectralGraphAnalysis/main.py", line 8, in <module>
    import scipy
  File "C:\Python27\lib\site-packages\scipy\__init__.py", line 61, in <module>
    from numpy._distributor_init import NUMPY_MKL  # requires numpy+mkl
ImportError: cannot import name NUMPY_MKL

我在Windows 10下使用python 2.7。

我已安装scipy,但似乎无法解决问题

感谢任何帮助。

9 个答案:

答案 0 :(得分:222)

如果您查看导致错误的行,您会看到:

from numpy._distributor_init import NUMPY_MKL  # requires numpy+mkl

此行注释将依赖关系指定为numpy+mklnumpyIntel Math Kernel Library)。这意味着您已经numpy安装了pip,但scipy由预编译存档安装,预期存档numpy+mkl

here的whl文件安装numpy+mkl可以轻松解决此问题。

答案 1 :(得分:14)

www.lfd.uci.edu/~gohlke/pythonlibs重新安装numpy-1.11.0_XXX.whl(适用于您的Python)。如果与我之前29.03.2016之前下载的版本进行比较,此文件具有相同的名称和版本,但其大小和内容与旧版本不同。重新安装后错误消失了。

第二个选项 - 从0.17.1

返回scipy 0.17.0

P.S。我使用Windows 64位版本的Python 3.5.1,因此无法保证已经纠正了Python 2.7的numpy。

答案 2 :(得分:11)

我不确定这是否是一个好的解决方案,但它删除了错误。 我评论了这一行:

from numpy._distributor_init import NUMPY_MKL 

它有效。不确定这是否会导致其他功能突破

答案 3 :(得分:7)

我在Windows上安装gensim时遇到了同样的问题。 Gensim依赖于scipy和scipy on numpy。让所有三项工作都是真正的痛苦。我花了很多时间让所有工作同时进行。

解决方案: 如果您使用的是Windows,请确保安装numpy + mkl而不是numpy。 如果你已经安装了scipy和numpy,请先卸载然后使用&#34; pip uninstall scipy&#34;和&#34; pip uninstall numpy&#34;

然后从http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy下载numpy-1.13.1 + mkl-cp34-cp34m-win32.whl 并使用pip install numpy-1.13.1 + mkl-cp34-cp34m-win32.wh进行安装 注意:在cp34-cp34m中34表示您正在使用的python版本,因此请下载相关版本。

现在从http://www.lfd.uci.edu/~gohlke/pythonlibs/#scipy下载scipy(适用于你的python和系统的版本) 并安装使用&#34; pip install scipy-0.19.1-cp34-cp34m-win32.whl&#34;

你的numpy和Scipy现在都应该工作了。 Christoph Gohlke的这些二进制文件使得在Windows上安装python包变得非常容易。但请确保从那里下载所有相关软件包。

答案 4 :(得分:2)

错误的原因是你升级了你的numpy库,其中有一些scipy的功能,当前版本需要它来运行,这可能在scipy中找不到。只需使用python -m pip install scipy --upgrade升级你的scipy库。我遇到了同样的错误,这个解决方案适用于我的python 3.5。

答案 5 :(得分:1)

我没有足够的声誉来发表评论,但我想补充一点,.whl文件的cp编号代表您的python版本。

cp35-> Python 3.5.x

cp36-> Python 3.6.x

cp37-> Python 3.7.x

我认为这很明显,但由于这个原因,我仍然浪费了近一个小时,也许其他人也为此付出了努力。

因此,对我来说,我在这里下载的是cp36版本:https://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy 因为我使用的是Python 3.6.8。

然后我卸载了numpy:

pip uninstall numpy 

然后我安装了numpy + mkl:

pip install <destination of your .whl file>

答案 6 :(得分:0)

从您的日志中可以清楚地看到numpy包丢失了。正如PyPI package中提到的那样:

  

SciPy库依赖于NumPy,它提供了方便快捷的N维数组操作。

因此,尝试像numpy一样为python安装scipy包。

答案 7 :(得分:0)

我最近在尝试在jupyter(python3.x,win10)中加载scipy时遇到了同样的错误,尽管刚刚通过pip升级到numpy-1.13.3 + mkl。 解决方案是简单地升级scipy包(从v0.19到v1.0.0)。

答案 8 :(得分:0)

是的,只需重新安装numpy即可。