ImportError:无法导入名称NUMPY_MKL


92

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

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但是似乎无法解决问题

任何帮助表示赞赏。

Answers:


223

如果查看引起错误的行,则会看到以下内容:

from numpy._distributor_init import NUMPY_MKL  # requires numpy+mkl

该行注释将依赖项声明为numpy+mklnumpy对于Intel Math Kernel Library)。这意味着您已经安装了numpyby pip,但是the scipy是通过预编译的存档安装的,其期望值为numpy+mkl

通过numpy+mkl此处的 whl文件进行安装,可以轻松解决此问题。


5
该解决方案适用于在Windows上运行Python 2.7.10的系统
ScottMcC 2016年

2
@VMAtm我们可以在同一个virtualenvs中同时安装numpy(来自pip)和numpy + mkl(来自预编译库)吗?
StrawhatLuffy

据我所知,答案是否定的。他们彼此之间是不固定的,因为最后只有一些处理器指令(如果我对它很了解的话)会很
麻木

2
解决方案在python 2.7 Windows 7上运行良好。为我节省了很多时间,谢谢您一打!
2013年

pip install <numpy wheel path>-用户在我遇到权限问题时为我工作。
阿米特·库玛

14

www.lfd.uci.edu/~gohlke/pythonlibs重新安装numpy-1.11.0_XXX.whl(针对您的Python)。与我较早前于2016年3月29日下载的变体相比,此文件具有相同的名称和版本,但其大小和内容与旧变体不同。重新安装后错误消失了。

第二种选择-从0.17.1返回到scipy 0.17.0

PS我使用Windows 64位版本的Python 3.5.1,因此不能保证Python 2.7的numpy已得到纠正。


11

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

from numpy._distributor_init import NUMPY_MKL 

而且有效。不知道这是否会导致其他功能中断


3
:)有趣的是,它确实有效,并且在Linux版本的scipy中没有这样的代码行。
dzmitry'7

7

在Windows上安装gensim时遇到相同的问题。Gensim依赖scipy和scipy依赖numpy。使所有这三个工作都是真正的痛苦。我花了很多时间才能同时完成所有工作。

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

然后从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(适用于您的python和系统的版本)下载scipy,然后使用“ pip install scipy‑0.19.1‑cp34‑cp34m‑win32安装”。 ”

您的numpy和Scipy都应该可以正常工作了。Christoph Gohlke的这些二进制文件使在Windows上安装python软件包非常容易。但是,请确保从那里下载所有依赖包。


我从3.6恢复到python 3.4,因为我在用python 3.6安装scipy时遇到问题
user3046442

3

我没有足够的信誉来发表评论,但我想补充一点,.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>

2

出现该错误的原因是您升级了numpy库,该库的某些功能需要scipy才能运行,而当前版本需要scipy才能运行它。只需使用python -m pip install scipy --upgrade升级您的scipy库。我遇到了同样的错误,此解决方案适用于我的python 3.5。


0

从您的日志中可以清楚地看到该numpy软件包丢失。正如在PyPI包中提到的:

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

因此,尝试numpy像使用一样为python 安装软件包scipy


3
我也已经安装了。由于某种原因,我不得不关闭Spyder并再次运行它,从而解决了该问题。不管怎么说,还是要谢谢你。
史蒂夫(Steve)

2
即使存在numpy,如果尚未在MKL支持下编译numpy,也会出现此错误。
KDN

工作了 谢谢我的scikit来自lfd.uci.edu/~gohlke/pythonlibs,所以不得不使用同一发行版中的numpy
Anuvrat Tiku

0

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


我只是想提供一个遇到类似问题时使用的修复程序。
EV

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.