ImportError: no se puede importar el nombre NUMPY_MKL


92

Estoy intentando ejecutar el siguiente código simple

import scipy
scipy.test()

Pero recibo el siguiente error

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

Estoy usando Python 2.7 en Windows 10.

Lo he instalado scipypero eso no parece solucionar el problema

Se agradece cualquier ayuda.

Respuestas:


223

Si observa la línea que está causando el error, verá esto:

from numpy._distributor_init import NUMPY_MKL  # requires numpy+mkl

Este comentario de línea establece la dependencia como numpy+mkl( numpycon Intel Math Kernel Library ). Esto significa que ha instalado el numpyby pip, pero el scipyarchivo precompilado lo instaló, que espera numpy+mkl.

Este problema se puede resolver fácilmente mediante la instalación numpy+mkldesde el archivo whl desde aquí .


5
Esta solución funcionó para mí ejecutando Python 2.7.10 en Windows
ScottMcC

2
@VMAtm ¿Podemos tener las instalaciones de numpy (de pip) y numpy + mkl (de libs precompiladas) en los mismos virtualenvs?
StrawhatLuffy

Hasta donde yo sé, la respuesta es no. Se están deshaciendo entre sí, ya que es un numpy al final, solo con algunas instrucciones del procesador (si las entiendo bien)
VMAtm

2
La solución funcionó perfectamente en Python 2.7 Windows 7. Me ahorró mucho tiempo, ¡una docena de gracias!
sel

pip install <numpy wheel path>: el usuario trabajó para mí ya que estaba obteniendo un problema de permiso.
Amit Kumar

14

Reinstale numpy-1.11.0_XXX.whl (para su Python) desde www.lfd.uci.edu/~gohlke/pythonlibs . Este archivo tiene el mismo nombre y versión si se compara con la variante que descargué antes el 29.03.2016, pero su tamaño y contenido difieren de la variante anterior. Después de la reinstalación, el error desapareció.

Segunda opción: volver a scipy 0.17.0 desde 0.17.1

PD: uso la versión de Windows de 64 bits de Python 3.5.1, por lo que no puedo garantizar que numpy para Python 2.7 ya esté corregido.


11

No estoy seguro de si esta es una buena solución, pero eliminó el error. Comenté la línea:

from numpy._distributor_init import NUMPY_MKL 

Y funcionó. Sin embargo, no estoy seguro de si esto hará que otras funciones se rompan


3
:) Lo interesante es que realmente funciona y no existe tal línea en la versión linux de scipy.
dzmitry

7

Tuve el mismo problema al instalar gensim en Windows. Gensim depende de scipy y scipy de numpy. Hacer que los tres funcionen es un verdadero dolor. Me tomó mucho tiempo hacer que todo funcionara al mismo tiempo.

Solución: si está utilizando Windows, asegúrese de instalar numpy + mkl en lugar de solo numpy. Si ya ha instalado scipy y numpy, desinstale y luego use "pip uninstall scipy" y "pip uninstall numpy"

Luego descargue numpy-1.13.1 + mkl-cp34-cp34m-win32.whl desde http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy e instálelo usando pip install numpy-1.13.1 + mkl- cp34-cp34m-win32.wh Nota: en cp34-cp34m 34 ​​representa la versión de Python que estás usando, así que descarga la versión relevante.

Ahora descargue scipy desde http://www.lfd.uci.edu/~gohlke/pythonlibs/#scipy (versión apropiada para su python y sistema) e instálelo usando "pip install scipy ‑ 0.19.1 ‑ cp34 ‑ cp34m ‑ win32. whl "

Tu numpy y Scipy deberían funcionar ahora. Estos binarios de Christoph Gohlke facilitan la instalación de paquetes de Python en Windows. Pero asegúrese de descargar todos los paquetes dependientes desde allí.


Volví a Python 3.4 desde 3.6 porque tenía problemas para instalar scipy con Python 3.6
user3046442

3

No tengo suficiente reputación para comentar, pero quiero agregar que el número cp del archivo .whl representa su versión de Python.

cp35 -> Python 3.5.x

cp36 -> Python 3.6.x

cp37 -> Python 3.7.x

Creo que es bastante obvio, pero aun así perdí casi una hora debido a esto y tal vez otras personas también luchan con eso.

Entonces, para mí funcionó la versión cp36 que descargué aquí: https://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy ya que estoy usando Python 3.6.8.

Luego desinstalé numpy:

pip uninstall numpy 

Luego instalé numpy + mkl:

pip install <destination of your .whl file>

2

El motivo del error es que actualizó su biblioteca numpy, de la cual hay algunas funcionalidades de scipy que son requeridas por la versión actual para que se ejecute y que pueden no encontrarse en scipy. Simplemente actualice su biblioteca scipy usando python -m pip install scipy --upgrade. Estaba enfrentando el mismo error y esta solución funcionó en mi python 3.5.


0

De su registro está claro que numpyfalta el paquete. Como se menciona en el paquete PyPI :

La biblioteca SciPy depende de NumPy, que proporciona una manipulación de matrices N-dimensional cómoda y rápida.

Entonces, intente instalar el numpypaquete para Python como lo hizo con scipy.


3
También lo tenía instalado. Por alguna razón tuve que cerrar Spyder y ejecutarlo nuevamente y eso resolvió el problema. Gracias de cualquier manera.
Steve

2
Este error surge incluso si numpy está presente, si numpy no se ha compilado con soporte MKL.
KDN

Trabajó. gracias, mi scikit era de lfd.uci.edu/~gohlke/pythonlibs Así que tuve que usar el numpy de la misma distribución
Anuvrat Tiku

0

Recientemente recibí el mismo error al intentar cargar scipy en jupyter (python3.x, win10), aunque acababa de actualizar a numpy-1.13.3 + mkl a través de pip. La solución fue simplemente actualizar el paquete scipy (de v0.19 a v1.0.0).


Solo quería proporcionar una solución que usé cuando encontré un problema muy similar.
EV

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.