ImportError: không thể nhập tên NUMPY_MKL


92

Tôi đang cố chạy đoạn mã đơn giản sau

import scipy
scipy.test()

Nhưng tôi gặp lỗi sau

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

Tôi đang sử dụng python 2.7 trong windows 10.

Tôi đã cài đặt scipynhưng điều đó dường như không giải quyết được vấn đề

Bất kỳ trợ giúp được đánh giá cao.

Câu trả lời:


223

Nếu bạn nhìn vào dòng gây ra lỗi, bạn sẽ thấy dòng này:

from numpy._distributor_init import NUMPY_MKL  # requires numpy+mkl

Nhận xét dòng này cho biết sự phụ thuộc là numpy+mkl( numpyvới Thư viện Hạt nhân Toán học Intel ). Điều này có nghĩa là bạn đã cài đặt numpybởi pip, nhưng scipyđã được cài đặt bởi kho lưu trữ được biên dịch trước, điều này mong đợi numpy+mkl.

Vấn đề này có thể được giải quyết dễ dàng bằng cách cài đặt cho numpy+mkltừ tệp whl từ đây .


5
Giải pháp này phù hợp với tôi khi chạy Python 2.7.10 trên Windows
ScottMcC

2
@VMAtm Chúng ta có thể cài đặt cả numpy (từ pip) và numpy + mkl (từ libs được biên dịch trước) trong cùng một virtualenv không?
StrawhatLuffy

Theo như tôi biết, câu trả lời là không. Họ đang gỡ cài đặt lẫn nhau, vì nó là một rắc rối ở cuối, chỉ với một số hướng dẫn bộ xử lý (nếu tôi hiểu rõ về nó)
VMAtm

2
Giải pháp hoạt động hoàn hảo trên python 2.7 windows 7. Đã tiết kiệm cho tôi rất nhiều thời gian, cảm ơn bạn rất nhiều!
sel

pip install <numpy wheel path> --user đã làm việc cho tôi vì tôi gặp sự cố về quyền.
Amit Kumar,

14

Cài đặt lại numpy-1.11.0_XXX.whl (cho Python của bạn) từ www.lfd.uci.edu/~gohlke/pythonlibs . Tệp này có cùng tên và phiên bản nếu so sánh với biến thể do tôi tải xuống trước đó ngày 29.03.2016, nhưng kích thước và nội dung của nó khác với biến thể cũ. Sau khi cài đặt lại lỗi đã biến mất.

Tùy chọn thứ hai - quay trở lại scipy 0.17.0 từ 0.17.1

PS Tôi sử dụng phiên bản Windows 64-bit của Python 3.5.1, vì vậy không thể đảm bảo rằng numpy cho Python 2.7 đã được sửa chữa.


11

Tôi không chắc liệu đây có phải là một giải pháp tốt hay không nhưng nó đã loại bỏ lỗi. Tôi đã nhận xét ra dòng:

from numpy._distributor_init import NUMPY_MKL 

va no đa hoạt động. Không chắc chắn liệu điều này có khiến các tính năng khác bị hỏng hay không


3
:) Điều thú vị là nó thực sự hoạt động và không có dòng nào như vậy trong phiên bản linux của scipy.
dzmitry

7

Tôi đã gặp vấn đề tương tự khi cài đặt gensim trên windows. Gensim phụ thuộc vào scipy và scipy vào numpy. Làm cho cả ba công việc là một nỗi đau thực sự. Tôi đã mất rất nhiều thời gian để làm cho tất cả ở đó hoạt động cùng một lúc.

Giải pháp: Nếu bạn đang sử dụng windows, hãy đảm bảo rằng bạn cài đặt numpy + mkl thay vì chỉ numpy. Nếu bạn đã cài đặt scipy và numpy, hãy gỡ cài đặt sau đó sử dụng "pip gỡ cài đặt scipy" và "pip gỡ cài đặt numpy"

Sau đó tải xuống numpy-1.13.1 + mkl-cp34-cp34m-win32.whl từ http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy và cài đặt bằng pip install numpy-1.13.1 + mkl- cp34-cp34m-win32.wh Lưu ý: trong cp34-cp34m 34 ​​đại diện cho phiên bản python bạn đang sử dụng, vì vậy hãy tải xuống phiên bản có liên quan.

Bây giờ tải xuống scipy từ http://www.lfd.uci.edu/~gohlke/pythonlibs/#scipy (phiên bản thích hợp cho hệ thống và hệ thống của bạn) và cài đặt bằng cách sử dụng "pip install scipy ‑ 0.19.1 ‑ cp34 ‑ cp34m ‑ win32. whl "

Cả hai numpy và Scipy của bạn sẽ hoạt động ngay bây giờ. Các mã nhị phân này của Christoph Gohlke giúp cài đặt các gói python trên windows rất dễ dàng. Nhưng hãy đảm bảo rằng bạn tải xuống tất cả các gói phụ thuộc từ đó.


Tôi trở lại là python 3.4 từ 3.6 như tôi đã có vấn đề cài đặt scipy với python 3.6
user3046442

3

Tôi không có đủ danh tiếng để nhận xét nhưng tôi muốn nói thêm rằng số cp của tệp .whl là viết tắt của phiên bản python của bạn.

cp35 -> Python 3.5.x

cp36 -> Python 3.6.x

cp37 -> Python 3.7.x

Tôi nghĩ nó khá rõ ràng nhưng tôi vẫn lãng phí gần một giờ vì điều này và có thể những người khác cũng phải vật lộn với điều đó.

Vì vậy, đối với tôi phiên bản cp36 đã làm việc mà tôi đã tải xuống tại đây: https://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy vì tôi đang sử dụng Python 3.6.8.

Sau đó, tôi gỡ cài đặt numpy:

pip uninstall numpy 

Sau đó, tôi đã cài đặt numpy + mkl:

pip install <destination of your .whl file>

2

Lý do của lỗi là bạn đã nâng cấp thư viện numpy của mình, trong đó có một số chức năng từ scipy được phiên bản hiện tại yêu cầu để nó chạy mà có thể không tìm thấy trong scipy. Chỉ cần nâng cấp thư viện scipy của bạn bằng cách sử dụng python -m pip install scipy --upgrade. Tôi gặp phải lỗi tương tự và giải pháp này đã hoạt động trên python 3.5 của tôi.


0

Từ nhật ký của bạn, rõ ràng rằng numpygói bị thiếu. Như đã đề cập trong gói PyPI :

Thư viện SciPy phụ thuộc vào NumPy, cung cấp khả năng thao tác mảng N chiều thuận tiện và nhanh chóng.

Vì vậy, hãy thử cài đặt numpygói cho python như bạn đã làm với scipy.


3
Tôi cũng đã cài đặt nó. Vì một số lý do, tôi phải đóng Spyder và chạy lại và điều đó đã giải quyết được vấn đề. Dẫu sao cũng xin cảm ơn.
Steve

2
Lỗi này phát sinh ngay cả khi có numpy, nếu numpy chưa được biên dịch với sự hỗ trợ của MKL.
KDN

Đã làm việc. nhờ scikit của tôi là từ lfd.uci.edu/~gohlke/pythonlibs Vì vậy phải sử dụng NumPy từ distro cùng
Anuvrat Tiku

0

Gần đây tôi đã gặp lỗi tương tự khi cố gắng tải scipy trong jupyter (python3.x, win10), mặc dù vừa nâng cấp lên numpy-1.13.3 + mkl thông qua pip. Giải pháp là chỉ cần nâng cấp gói scipy (từ v0.19 lên v1.0.0).


Tôi chỉ muốn cung cấp một bản sửa lỗi mà tôi đã sử dụng khi gặp sự cố tương tự.
EV

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.