ImportError: невозможно импортировать имя NUMPY_MKL


92

Я пытаюсь запустить следующий простой код

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но, похоже, это не решает проблему

Любая помощь приветствуется.

Ответы:


223

Если вы посмотрите на строку, которая вызывает ошибку, вы увидите следующее:

from numpy._distributor_init import NUMPY_MKL  # requires numpy+mkl

Этот комментарий к строке указывает зависимость как numpy+mkl( numpyс библиотекой ядра Intel Math ). Это означает, что вы установили файл numpyby pip, но он scipyбыл установлен заранее скомпилированным архивом, который ожидает numpy+mkl.

Эта проблема может быть легко решена с помощью установки для numpy+mklиз WHL файла из здесь .


5
Это решение помогло мне запустить Python 2.7.10 в Windows
ScottMcC

2
@VMAtm Можно ли иметь обе установки numpy (из pip) и numpy + mkl (из предварительно скомпилированных библиотек) в одних и тех же виртуальных библиотеках?
StrawhatLuffy

Насколько я знаю, ответ отрицательный. Они деинсталлируют друг друга, так как в конце ничего не происходит, только с некоторыми инструкциями процессора (если я хорошо это понимаю)
VMAtm

2
Решение отлично работало на python 2.7 windows 7. Сэкономил мне много времени, большое спасибо!
sel

pip install <numpy wheel path> --user работал у меня, так как у меня возникала проблема с разрешением.
Амит Кумар

14

Переустановите numpy-1.11.0_XXX.whl (для вашего Python) с www.lfd.uci.edu/~gohlke/pythonlibs . Этот файл имеет то же имя и версию, если сравнивать с вариантом, загруженным мной ранее 29.03.2016, но его размер и содержание отличаются от старого варианта. После переустановки ошибка исчезла.

Второй вариант - вернуться к scipy 0.17.0 с 0.17.1

PS Я использую 64-разрядную версию Python 3.5.1 для Windows, поэтому не могу гарантировать, что numpy для Python 2.7 уже исправлен.


11

Я не уверен, что это хорошее решение, но оно устранило ошибку. Я закомментировал строку:

from numpy._distributor_init import NUMPY_MKL 

и это сработало. Не уверен, что это приведет к поломке других функций


3
:) Интересно то, что это действительно работает и в версии scipy для linux нет такой строчки.
dzmitry

7

У меня была такая же проблема при установке gensim на Windows. Gensim зависит от scipy и scipy от numpy. Заставить все три работать - настоящая боль. Мне потребовалось много времени, чтобы заставить все работать одновременно.

Решение: если вы используете Windows, убедитесь, что вы установили numpy + mkl, а не просто numpy. Если вы уже установили scipy и numpy, удалите, а затем используйте «pip uninstall scipy» и «pip uninstall numpy»

Затем загрузите numpy-1.13.1 + mkl-cp34-cp34m-win32.whl с http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy и установите с помощью pip install numpy-1.13.1 + mkl- cp34-cp34m-win32.wh Примечание: в cp34-cp34m 34 ​​представляет версию Python, которую вы используете, поэтому загрузите соответствующую версию.

Теперь загрузите scipy с http://www.lfd.uci.edu/~gohlke/pythonlibs/#scipy (соответствующая версия для вашего python и системы) и установите с помощью «pip install scipy ‑ 0.19.1 ‑ cp34 ‑ cp34m ‑ win32. whl "

Ваш numpy и Scipy теперь должны работать. Эти двоичные файлы от Christoph Gohlke упрощают установку пакетов python в Windows. Но убедитесь, что вы загрузили оттуда все зависимые пакеты.


Я вернулся к python 3.4 с 3.6, так как у меня возникли проблемы с установкой scipy с python 3.6
user3046442

3

У меня недостаточно репутации, чтобы комментировать, но я хочу добавить, что номер cp файла .whl соответствует вашей версии python.

cp35 -> Python 3.5.x

cp36 -> Python 3.6.x

cp37 -> Python 3.7.x

Я думаю, это довольно очевидно, но все же я потратил почти час из-за этого, и, возможно, другие люди тоже борются с этим.

Так что для меня работала версия cp36, которую я скачал здесь: https://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy, поскольку я использую Python 3.6.8.

Затем я удалил numpy:

pip uninstall numpy 

Затем я установил numpy + mkl:

pip install <destination of your .whl file>

2

Причина ошибки в том, что вы обновили свою библиотеку numpy, в которой есть некоторые функции от scipy, которые требуются для текущей версии для ее запуска, которые могут не быть найдены в scipy. Просто обновите свою scipy библиотеку с помощью python -m pip install scipy --upgrade. Я столкнулся с той же ошибкой, и это решение работало на моем python 3.5.


0

Из вашего журнала ясно, что numpyпакет отсутствует. Как упоминается в пакете PyPI :

Библиотека SciPy зависит от NumPy, который обеспечивает удобные и быстрые манипуляции с N-мерными массивами.

Итак, попробуйте установить numpyпакет для python, как вы это делали с scipy.


3
Я тоже установил это. По какой-то причине мне пришлось закрыть Spyder и запустить его снова, и это решило проблему. Спасибо, в любом случае.
Стив

2
Эта ошибка возникает, даже если присутствует numpy, если numpy не был скомпилирован с поддержкой MKL.
KDN

Работал. спасибо, мой scikit был с lfd.uci.edu/~gohlke/pythonlibs Так что пришлось использовать numpy из того же дистрибутива
Anuvrat Tiku

0

Недавно я получил ту же ошибку при попытке загрузить scipy в jupyter (python3.x, win10), хотя только что обновился до numpy-1.13.3 + mkl через pip. Решением было просто обновить пакет scipy (с v0.19 до v1.0.0).


Я просто хотел предоставить исправление, которое использовал, когда столкнулся с очень похожей проблемой.
EV

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.