ImportError: nie można zaimportować nazwy NUMPY_MKL


92

Próbuję uruchomić następujący prosty kod

import scipy
scipy.test()

Ale pojawia się następujący błąd

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

Używam Pythona 2.7 pod Windows 10.

Zainstalowałem, scipyale to nie wydaje się rozwiązać problemu

Każda pomoc jest mile widziana.

Odpowiedzi:


223

Jeśli spojrzysz na linię, która powoduje błąd, zobaczysz to:

from numpy._distributor_init import NUMPY_MKL  # requires numpy+mkl

Ten komentarz wiersza określa zależność jako numpy+mkl( numpyz biblioteką jądra Intel Math ). Oznacza to, że zainstalowałeś numpyby pip, ale scipyzostał zainstalowany przez prekompilowane archiwum, co oczekuje numpy+mkl.

Ten problem można łatwo rozwiązać poprzez instalację na numpy+mklod WHL pliku z tutaj .


5
To rozwiązanie zadziałało dla mnie pod Pythonem 2.7.10 w systemie Windows
ScottMcC

2
@VMAtm Czy możemy mieć zarówno instalacje numpy (z pip), jak i numpy + mkl (z prekompilowanych bibliotek) w tych samych virtualenvach?
StrawhatLuffy

O ile wiem, odpowiedź brzmi: nie. Odinstalowują się nawzajem, ponieważ na końcu jest zdrętwiały, tylko z niektórymi instrukcjami procesora (jeśli dobrze to rozumiem)
VMAtm

2
Rozwiązanie działało idealnie na Windows 7 w Pythonie 2.7. Zaoszczędziło mi dużo czasu dziękuję kilkanaście!
sel

pip install <numpy wheel path> --user pracował dla mnie, ponieważ otrzymywałem problem z uprawnieniami.
Amit Kumar

14

Ponownie zainstaluj numpy-1.11.0_XXX.whl (dla twojego Pythona) z www.lfd.uci.edu/~gohlke/pythonlibs . Ten plik ma tę samą nazwę i wersję w porównaniu z wariantem pobranym przeze mnie wcześniej 29.03.2016, ale jego rozmiar i zawartość różnią się od starego wariantu. Po ponownej instalacji błąd zniknął.

Druga opcja - powrót do scipy 0.17.0 z 0.17.1

PS Używam 64-bitowej wersji Pythona 3.5.1 dla systemu Windows, więc nie mogę zagwarantować, że numpy dla Pythona 2.7 jest już poprawione.


11

Nie jestem pewien, czy to dobre rozwiązanie, ale usunęło błąd. Skomentowałem linię:

from numpy._distributor_init import NUMPY_MKL 

i zadziałało. Nie jestem pewien, czy spowoduje to uszkodzenie innych funkcji


3
:) Ciekawostką jest to, że to naprawdę działa i nie ma takiej linii w wersji scipy dla Linuksa.
dzmitry

7

Miałem ten sam problem podczas instalacji gensima na windowsie. Gensim jest zależny od scipy i scipy od numpy. Wykonanie wszystkich trzech czynności to prawdziwy ból. Zajęło mi dużo czasu, aby wszystko działało w tym samym czasie.

Rozwiązanie: Jeśli używasz systemu Windows, upewnij się, że instalujesz numpy + mkl zamiast tylko numpy. Jeśli masz już zainstalowane scipy i numpy, odinstaluj, a następnie za pomocą „pip uninstall scipy” i „pip uninstall numpy”

Następnie pobierz numpy-1.13.1 + mkl-cp34-cp34m-win32.whl z http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy i zainstaluj za pomocą pip install numpy-1.13.1 + mkl- cp34-cp34m-win32.wh Uwaga: w cp34-cp34m 34 ​​reprezentuje wersję Pythona, której używasz, więc pobierz odpowiednią wersję.

Teraz pobierz scipy z http://www.lfd.uci.edu/~gohlke/pythonlibs/#scipy (wersja odpowiednia dla Twojego Pythona i systemu) i zainstaluj za pomocą polecenia „pip install scipy ‑ 0.19.1 ‑ cp34 ‑ cp34m ‑ win32. whl "

Twój numpy i Scipy powinny teraz działać. Te pliki binarne autorstwa Christopha Gohlkego bardzo ułatwiają instalację pakietów Pythona w systemie Windows. Ale upewnij się, że pobierasz stamtąd wszystkie pakiety zależne.


Wróciłem do Pythona 3.4 z 3.6, ponieważ miałem problemy z instalacją Scipy z Pythonem 3.6
user3046442

3

Nie mam wystarczającej reputacji, aby komentować, ale chcę dodać, że numer cp pliku .whl oznacza twoją wersję Pythona.

cp35 -> Python 3.5.x

cp36 -> Python 3.6.x

cp37 -> Python 3.7.x

Myślę, że to dość oczywiste, ale mimo to straciłem z tego powodu prawie godzinę i może inni też mają z tym problem.

Więc dla mnie działała wersja cp36, którą pobrałem tutaj: https://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy, ponieważ używam Pythona 3.6.8.

Następnie odinstalowałem numpy:

pip uninstall numpy 

Następnie zainstalowałem numpy + mkl:

pip install <destination of your .whl file>

2

Powodem tego błędu jest aktualizacja biblioteki numpy, w której istnieją pewne funkcje z scipy, które są wymagane przez bieżącą wersję do działania, których nie można znaleźć w scipy. Po prostu zaktualizuj swoją bibliotekę scipy za pomocą python -m pip install scipy --upgrade. Miałem ten sam błąd i to rozwiązanie działało na moim Pythonie 3.5.


0

Z twojego dziennika jasno wynika, że numpybrakuje pakietu. Jak wspomniano w pakiecie PyPI :

Biblioteka SciPy zależy od NumPy, która zapewnia wygodną i szybką manipulację tablicą N-wymiarową.

Spróbuj więc zainstalować numpypakiet dla Pythona, tak jak zrobiłeś to z scipy.


3
Miałem też to zainstalowane. Z jakiegoś powodu musiałem zamknąć Spydera i uruchomić go ponownie, co rozwiązało problem. W każdym razie dzięki.
Steve

2
Ten błąd pojawia się nawet jeśli numpy jest obecny, jeśli numpy nie został skompilowany z obsługą MKL.
KDN

Pracował. dzięki, mój scikit był z lfd.uci.edu/~gohlke/pythonlibs Więc musiałem użyć numpy z tej samej dystrybucji
Anuvrat Tiku.

0

Niedawno dostałem ten sam błąd podczas próby załadowania scipy w jupyter (python3.x, win10), chociaż właśnie zaktualizowałem do numpy-1.13.3 + mkl przez pip. Rozwiązaniem była po prostu aktualizacja pakietu scipy (z v0.19 do v1.0.0).


Chciałem tylko zapewnić poprawkę, której użyłem, gdy napotkałem bardzo podobny problem.
EV,

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.