ImportError: impossible d'importer le nom NUMPY_MKL

92

J'essaye d'exécuter le code simple suivant

import scipy
scipy.test()

Mais j'obtiens l'erreur suivante

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

J'utilise python 2.7 sous Windows 10.

J'ai installé scipymais cela ne semble pas résoudre le problème

Toute aide est appréciée.

Steve
la source

Réponses:

223

Si vous regardez la ligne qui cause l'erreur, vous verrez ceci:

from numpy._distributor_init import NUMPY_MKL  # requires numpy+mkl

Ce commentaire de ligne indique la dépendance comme numpy+mkl( numpyavec Intel Math Kernel Library ). Cela signifie que vous avez installé le numpyby pip, mais que le a scipyété installé par une archive précompilée, ce qui attend numpy+mkl.

Ce problème peut être facilement résolu en installant le numpy+mklfichier from whl à partir d' ici .

VMAtm
la source
5
Cette solution a fonctionné pour moi exécutant Python 2.7.10 sur Windows
ScottMcC
2
@VMAtm Pouvons-nous avoir à la fois les installations de numpy (à partir de pip) et numpy + mkl (à partir de bibliothèques précompilées) dans les mêmes virtualenvs?
StrawhatLuffy
Autant que je sache, la réponse est non. Ils se désinstallent l'un l'autre, car c'est un peu engourdi à la fin, seulement avec quelques instructions du processeur (si je comprends bien)
VMAtm
2
La solution fonctionnait parfaitement sur python 2.7 windows 7. M'a fait gagner beaucoup de temps merci une douzaine!
sel
pip install <numpy wheel path> --user a fonctionné pour moi car j'obtenais un problème d'autorisation.
Amit Kumar
14

Réinstallez numpy-1.11.0_XXX.whl (pour votre Python) depuis www.lfd.uci.edu/~gohlke/pythonlibs . Ce fichier a le même nom et la même version si on le compare avec la variante que j'ai téléchargée plus tôt le 29.03.2016, mais sa taille et son contenu diffèrent de l'ancienne variante. Après la réinstallation, l'erreur a disparu.

Deuxième option - revenir à scipy 0.17.0 à partir de 0.17.1

PS J'utilise la version Windows 64 bits de Python 3.5.1, je ne peux donc pas garantir que numpy pour Python 2.7 est déjà corrigé.

Andrew
la source
11

Je ne suis pas sûr que ce soit une bonne solution, mais cela a supprimé l'erreur. J'ai commenté la ligne:

from numpy._distributor_init import NUMPY_MKL 

et cela a fonctionné. Je ne sais pas si cela entraînera la rupture d'autres fonctionnalités

Lenny
la source
3
:) Ce qui est intéressant, c'est que cela fonctionne vraiment et qu'il n'y a pas de telle ligne dans la version Linux de scipy.
dzmitry le
7

J'ai eu le même problème lors de l'installation de gensim sur windows. Gensim dépend de scipy et scipy de numpy. Faire fonctionner les trois est une vraie douleur. Il m'a fallu beaucoup de temps pour que tout fonctionne en même temps.

Solution: si vous utilisez Windows, assurez-vous d'installer numpy + mkl au lieu de simplement numpy. Si vous avez déjà installé scipy et numpy, désinstallez-les en utilisant "pip uninstall scipy" et "pip uninstall numpy"

Ensuite, téléchargez numpy-1.13.1 + mkl-cp34-cp34m-win32.whl depuis http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy et installez à l'aide de pip install numpy-1.13.1 + mkl- cp34-cp34m-win32.wh Remarque: dans cp34-cp34m 34 ​​représentent la version de python que vous utilisez, alors téléchargez la version appropriée.

Téléchargez maintenant scipy depuis http://www.lfd.uci.edu/~gohlke/pythonlibs/#scipy (version appropriée pour votre python et votre système) et installez-le à l'aide de "pip install scipy-0.19.1-cp34-cp34m-win32. whl "

Votre numpy et Scipy devraient fonctionner maintenant. Ces binaires de Christoph Gohlke facilitent l'installation de packages python sous Windows. Mais assurez-vous de télécharger tous les packages dépendants à partir de là.

user3046442
la source
Je suis revenu à python 3.4 à partir de la version 3.6 car j'avais des problèmes pour installer scipy avec python 3.6
user3046442
3

Je n'ai pas assez de réputation pour commenter mais je tiens à ajouter que le numéro cp du fichier .whl correspond à votre version de python.

cp35 -> Python 3.5.x

cp36 -> Python 3.6.x

cp37 -> Python 3.7.x

Je pense que c'est assez évident, mais j'ai quand même perdu presque une heure à cause de cela et peut-être que d'autres personnes ont du mal avec cela aussi.

Donc, pour moi, la version cp36 a fonctionné que j'ai téléchargée ici: https://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy puisque j'utilise Python 3.6.8.

Ensuite, j'ai désinstallé numpy:

pip uninstall numpy 

Ensuite, j'ai installé numpy + mkl:

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

La raison de l'erreur est que vous avez mis à niveau votre bibliothèque numpy, dont certaines fonctionnalités de scipy sont requises par la version actuelle pour qu'elle s'exécute, ce qui peut ne pas être trouvé dans scipy. Mettez simplement à niveau votre bibliothèque scipy en utilisant python -m pip install scipy --upgrade. J'étais confronté à la même erreur et cette solution a fonctionné sur mon python 3.5.

Simbarashe Mupfururirwa
la source
0

Dans votre journal, il est clair que le numpypackage est manquant. Comme mentionné dans le package PyPI :

La bibliothèque SciPy dépend de NumPy, qui permet une manipulation pratique et rapide des tableaux en N dimensions.

Alors, essayez d'installer le numpypackage pour python comme vous l'avez fait avec scipy.

manoj prashant k
la source
3
J'ai également fait installer cela. Pour une raison quelconque, j'ai dû fermer Spyder et l'exécuter à nouveau et cela a résolu le problème. Merci quand même.
Steve
2
Cette erreur survient même si numpy est présent, si numpy n'a pas été compilé avec le support MKL.
KDN
Travaillé. merci mon scikit était de lfd.uci.edu/~gohlke/pythonlibs donc dû utiliser le numpy de la même distribution
Anuvrat Tiku
0

J'ai récemment eu la même erreur en essayant de charger scipy dans jupyter (python3.x, win10), bien que juste après avoir mis à niveau vers numpy-1.13.3 + mkl via pip. La solution consistait simplement à mettre à jour le package scipy (de la v0.19 à la v1.0.0).

EV
la source
Je voulais juste fournir un correctif que j'ai utilisé lorsque j'ai rencontré un problème très similaire.
EV
0

oui, il suffit de réinstaller numpy, cela fonctionne.

feng ling
la source