ImportError: não é possível importar o nome NUMPY_MKL

92

Estou tentando executar o seguinte código simples

import scipy
scipy.test()

Mas estou recebendo o seguinte erro

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

Estou usando o python 2.7 no Windows 10.

Eu instalei scipymas isso não parece resolver o problema

Qualquer ajuda é apreciada.

Steve
fonte

Respostas:

223

Se você olhar a linha que está causando o erro, verá o seguinte:

from numpy._distributor_init import NUMPY_MKL  # requires numpy+mkl

Este comentário de linha declara a dependência como numpy+mkl( numpycom Intel Math Kernel Library ). Isso significa que você instalou o numpypor pip, mas o scipyfoi instalado por um arquivo pré-compilado, o que espera numpy+mkl.

Este problema pode ser facilmente resolvido numpy+mklinstalando o arquivo a partir daqui .

VMAtm
fonte
5
Esta solução funcionou para mim executando Python 2.7.10 no Windows
ScottMcC
2
@VMAtm Podemos ter as instalações de numpy (do pip) e numpy + mkl (de bibliotecas pré-compiladas) no mesmo virtualenvs?
StrawhatLuffy de
Pelo que eu sei, a resposta é não. Eles estão desmontando um ao outro, já que é um entorpecimento no final, apenas com algumas instruções do processador (se bem entendi)
VMAtm
2
A solução funcionou perfeitamente no python 2.7 windows 7. Me economizou muito tempo, obrigado uma dúzia!
sel
pip install <numpy wheel path> --user funcionou para mim porque eu estava recebendo problemas de permissão.
Amit Kumar
14

Reinstale numpy-1.11.0_XXX.whl (para seu Python) em www.lfd.uci.edu/~gohlke/pythonlibs . Este arquivo tem o mesmo nome e versão se comparar com a variante baixada por mim anteriormente em 29/03/2016, mas seu tamanho e conteúdo diferem da variante antiga. Após a reinstalação, o erro desapareceu.

Segunda opção - retornar ao scipy 0.17.0 a partir de 0.17.1

PS: Eu uso a versão de 64 bits do Python 3.5.1 para Windows, então não posso garantir que numpy para Python 2.7 já foi corrigido.

Andrew
fonte
11

Não tenho certeza se esta é uma boa solução, mas removeu o erro. Eu comentei a linha:

from numpy._distributor_init import NUMPY_MKL 

e funcionou. Não tenho certeza se isso fará com que outros recursos quebrem, embora

Lenny
fonte
3
:) O interessante é que realmente funciona e essa linha não existe na versão linux do scipy.
dzmitry
7

Eu tive o mesmo problema ao instalar o gensim no Windows. Gensim depende de scipy e scipy de numpy. Fazer os três funcionarem é uma verdadeira dor. Levei muito tempo para fazer tudo funcionar ao mesmo tempo.

Solução: Se você estiver usando o Windows, certifique-se de instalar o numpy + mkl em vez de apenas o numpy. Se você já instalou o scipy e o numpy, desinstale-o usando "pip uninstall scipy" e "pip uninstall numpy"

Em seguida, baixe numpy-1.13.1 + mkl-cp34-cp34m-win32.whl em http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy e instale usando pip install numpy-1.13.1 + mkl- cp34-cp34m-win32.wh Observação: em cp34-cp34m 34 ​​representa a versão do python que você está usando, então baixe a versão relevante.

Agora baixe o scipy de http://www.lfd.uci.edu/~gohlke/pythonlibs/#scipy (versão apropriada para seu python e sistema) e instale usando "pip install scipy ‑ 0.19.1 ‑ cp34 ‑ cp34m ‑ win32. whl "

Seu entorpecido e Scipy devem funcionar agora. Esses binários de Christoph Gohlke tornam muito fácil instalar pacotes Python no Windows. Mas certifique-se de baixar todos os pacotes dependentes de lá.

user3046442
fonte
Eu reverti para o python 3.4 do 3.6 porque estava tendo problemas para instalar o scipy com o python 3.6
user3046442
3

Não tenho reputação suficiente para comentar, mas gostaria de acrescentar que o número cp do arquivo .whl representa sua versão python.

cp35 -> Python 3.5.x

cp36 -> Python 3.6.x

cp37 -> Python 3.7.x

Acho que é bastante óbvio, mas ainda perdi quase uma hora por causa disso e talvez outras pessoas lutem com isso também.

Então, para mim funcionou a versão cp36 que baixei aqui: https://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy já que estou usando o Python 3.6.8.

Então eu desinstalei o numpy:

pip uninstall numpy 

Então instalei o numpy + mkl:

pip install <destination of your .whl file>
Adrian
fonte
2

O motivo do erro é que você atualizou sua biblioteca numpy, da qual existem algumas funcionalidades do scipy que são exigidas pela versão atual para sua execução e que podem não ser encontradas no scipy. Basta atualizar sua biblioteca scipy usando python -m pip install scipy --upgrade. Eu estava enfrentando o mesmo erro e essa solução funcionou no meu python 3.5.

Simbarashe Mupfururirwa
fonte
0

Em seu log numpyfica claro que o pacote está faltando. Conforme mencionado no pacote PyPI :

A biblioteca SciPy depende do NumPy, que fornece manipulação conveniente e rápida de array N-dimensional.

Portanto, tente instalar o numpypacote para python como fez com scipy.

manoj prashant k
fonte
3
Eu também instalei isso. Por algum motivo, tive que fechar o Spyder e executá-lo novamente e isso resolveu o problema. Obrigado mesmo assim.
Steve
2
Este erro surge mesmo se numpy estiver presente, se numpy não tiver sido compilado com suporte MKL.
KDN
Trabalhou. obrigado, meu scikit era de lfd.uci.edu/~gohlke/pythonlibs Então tive que usar o numpy da mesma distro
Anuvrat Tiku
0

Recentemente, recebi o mesmo erro ao tentar carregar o scipy no jupyter (python3.x, win10), embora apenas tenha atualizado para numpy-1.13.3 + mkl por meio do pip. A solução foi simplesmente atualizar o pacote scipy (de v0.19 para v1.0.0).

EV
fonte
Eu só queria fornecer uma correção que usei ao encontrar um problema muito semelhante.
EV
0

sim, basta reinstalar o numpy, funciona.

feng ling
fonte