2016-05-17 146 views
81

我试图运行下面简单的代码导入错误:无法导入名称NUMPY_MKL

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 

我使用python 2.7在Windows下10

我已经安装了scipy,但似乎没有解决问题

任何帮助表示赞赏。

回答

216

如果你看一下,这是造成错误的行,你会看到这一点:

from numpy._distributor_init import NUMPY_MKL # requires numpy+mkl 

这行注释状态的依赖性为numpy+mklnumpyIntel Math Kernel Library)。这意味着您已安装numpypip,但scipy已通过预编译归档安装,该预编译归档预计为numpy+mkl

通过从here whl文件安装numpy+mkl可以很容易地解决此问题。

+5

该解决方案为我在Windows上运行Python 2.7.10工作 – ScottMcC

+2

@VMAtm Can我们在相同的virtualenvs中都安装了numpy(来自pip)和numpy + mkl(来自预编译的库)? – StrawhatLuffy

+0

据我所知,答案是否定的。它们互相之间是互不相通的,因为它最后是一个numpy,只有一些处理器指令(如果我理解的很好) – VMAtm

0

从您的日志中可以明显看出numpy包缺失。如上面所提到的PyPI package

The SciPy library depends on NumPy, which provides convenient and fast N-dimensional array manipulation.

所以,尽量安装numpy包Python作为你scipy一样。

+3

我也有安装。出于某种原因,我不得不关闭Spyder并再次运行,并解决了问题。不管怎么说,还是要谢谢你。 – Steve

+2

即使numpy存在,如果numpy未与MKL支持一起编译,也会出现此错误。 – KDN

+0

工作。谢谢我的scikit来自http://www.lfd.uci.edu/~gohlke/pythonlibs/ 所以不得不使用来自同一发行版的numpy –

14

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

第二个方案 - 返回到从0.17.1

附:SciPy的0.17.0或更新版本我使用Windows 64位版本的Python 3.5.1,因此无法保证Python 2.7的numpy已经得到纠正。

9

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

from numpy._distributor_init import NUMPY_MKL 

它工作。不知道这是否会导致其他功能突破

+3

:)有趣的是,它真的有效,并且在scipy的linux版本中没有这样的行。 – dmitry

6

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

解决方案: 如果您使用Windows,请确保您安装numpy + mkl而不是numpy。 如果您已经安装SciPy的和numpy的,卸载然后使用 “PIP卸载SciPy的” 和 “点子卸载numpy的”

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

现在从http://www.lfd.uci.edu/~gohlke/pythonlibs/#scipy (你的Python和系统相应的版本)下载SciPy的安装和使用 “PIP安装SciPy的-0.19.1-CP34-cp34m-win32.whl”

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

+0

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

0

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

+0

这并不能真正回答问题。如果您有不同的问题,可以通过单击[提问](https://stackoverflow.com/questions/ask)来提问。您可以[添加赏金](https://stackoverflow.com/help/privileges/set-bounties)在您拥有足够的[声誉](https://stackoverflow.com/help/)后吸引更多关注此问题什么声誉)。 - [来自评论](/ review/low-quality-posts/18193645) – Rabbid76

+0

我只是想提供一个修复程序,当遇到一个非常类似的问题时使用。 –

相关问题