RuntimeError: mô-đun được biên dịch dựa trên phiên bản API a nhưng phiên bản numpy này là 9


76

Mã:

import numpy as np
import cv

Bảng điều khiển:

>>> runfile('/Users/isaiahnields/.spyder2/temp.py', wdir='/Users/isaiahnields/.spyder2')
RuntimeError: module compiled against API version a but this version of numpy is 9
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
File "/Applications/Spyder-Py2.app/Contents/Resources/lib/python2.7/spyderlib/widgets/externalshell/sitecustomize.py", line 685, in runfile
execfile(filename, namespace)
File "/Applications/Spyder-Py2.app/Contents/Resources/lib/python2.7/spyderlib/widgets/externalshell/sitecustomize.py", line 78, in execfile
builtins.execfile(filename, *where)
File "/Users/isaiahnields/.spyder2/temp.py", line 9, in <module>
import cv
File "/Applications/Spyder-Py2.app/Contents/Resources/lib/python2.7/cv.py", line 1, in <module>
from cv2.cv import *
ImportError: numpy.core.multiarray failed to import
>>> 

Thông tin hệ thống: OS X El Capitan, Macbook Air, Intel Core i5 1,3 GHz, 8 GB 1600 HMz DDR3

Tôi đã cố gắng cập nhật numpy. Tôi đã phải thêm cv.py vào thư mục python2.7 trong Spyder-Py2. Có điều gì khác tôi cần thêm không?

Câu trả lời:


110

nâng cấp numpy lên phiên bản mới nhất

pip install numpy --upgrade

8
Điều này giải quyết được vấn đề, nhưng TẠI SAO? Vấn đề này phát sinh bởi vì có hai numpy được cài đặt. Nâng cấp giải quyết vấn đề này như thế nào ?!
MAZDAK

Điều này không khắc phục được đối với tôi:Requirement already up-to-date: numpy in /home/ubuntu/miniconda/lib/python3.6/site-packages
Guillaume Chevalier

Nó có thể giải quyết vấn đề nếu bạn nhập torch bằng cách sử dụng python mặc định của mình, có phiên bản cũ hơn của numpy.
Semih Korkmaz

này làm việc cho tôi khi cố gắng nhập khẩu pytorch mới được cài đặt vớiimport torch
khủng long

Điều này làm việc cho tôi sau khi gỡ bỏ cài đặt và cài đặt lại python
Seabass77

15

Kiểm tra đường dẫn

import numpy
print numpy.__path__

Đối với tôi, đây là /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy Vì vậy, tôi đã chuyển nó đến một nơi tạm thời

sudo mv /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy \
/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy_old

và sau đó vào lần tiếp theo tôi nhập numpy, đường dẫn là /Library/Python/2.7/site-packages/numpy/ init .pyc và tất cả đều ổn.


1
Làm việc cho tôi là tốt. Cảm ơn bạn
Marcel Colomb

3
Đã hoạt động, nhưng cần phải cài đặt lại nó pip install numpy -I(đối số tôi viết hoa cho biết cài đặt trong khi bỏ qua cài đặt hiện tại đã được di chuyển).
Guillaume Chevalier

9

Điều này đã làm việc cho tôi:

sudo pip install numpy --upgrade --ignore-installed

Cái này cũng có tác dụng với tôi. Tôi đã gặp vấn đề tương tự trong đó một phiên bản numpy cũ được cài đặt và tôi không thể di chuyển hoặc gỡ bỏ numpy cũ
Amit Singh

4

Bạn có thể đang chạy Mac mặc định (/ usr / bin / python) có phiên bản cũ hơn của numpy được cài đặt trong các thư mục hệ thống. Cách dễ nhất để python hoạt động với opencv là sử dụng brew để cài đặt cả python và opencv vào / usr / local và chạy / usr / local / bin / python.

brew install python
brew tap homebrew/science
brew install opencv

2
Hãy cẩn thận! Bạn có thể cài đặt nhiều phiên bản python không phải là một ý kiến ​​hay. Bạn có thể kết thúc như anh chàng này: stackoverflow.com/questions/14117945/…
Jakobovski

3

Để giải quyết vấn đề, hãy làm như sau:

Gỡ cài đặt numpy đầu tiên

sudo pip uninstall numpy

Cài đặt numpy với tùy chọn --no-cache-dir

sudo pip install --no-cache-dir numpy

Và để chỉ định bất kỳ phiên bản cụ thể nào, ví dụ: 1.14.2

sudo pip install --no-cache-dir numpy==1.14.2

Không thể gỡ cài đặt 'numpy'. Đây là một dự án được cài đặt distutils và do đó chúng tôi không thể xác định chính xác tệp nào thuộc về nó, điều này sẽ chỉ dẫn đến việc gỡ cài đặt một phần.
tong

2

Tôi đã gặp phải vấn đề tương tự tối nay. Hóa ra là một vấn đề trong đó tôi đã cài đặt nhiều gói numpy. Phiên bản cũ hơn đã được cài đặt /usr/lib/python2.7và phiên bản chính xác đã được cài đặt /usr/local/lib/python2.7.

Ngoài ra, tôi đã có PYTHONPATH=/usr/lib/python2.7/dist-packages:/usr/local/lib/python2.7/dist-packages. PYTHONPATH đang tìm phiên bản cũ hơn của numpy trước phiên bản chính xác, vì vậy khi bên trong trình thông dịch Python, nó sẽ nhập phiên bản cũ hơn của numpy.

Một điều hữu ích là mở một phiên python, thực thi đoạn mã sau:

import numpy as np 
print np.__version__ 
print np.__path__

Điều đó sẽ cho bạn biết chính xác phiên bản Python đang sử dụng và nơi nó được cài đặt.

Để khắc phục sự cố, tôi đã thay đổi PYTHONPATH=/usr/local/lib/python2.7/dist-packages:/usr/lib/python2.7/dist-packages. Và tôi cũng thiết lập một môi trường Python ảo bằng Hướng dẫn của Hitchiker về Python , cụ thể là phần có tiêu đề "Cấp thấp hơn: virtualenv". Tôi biết tôi nên thiết lập một môi trường ảo ngay từ đầu, nhưng tôi cảm thấy mệt mỏi và lười biếng. Ồ, bài học kinh nghiệm!

(Cập nhật)

Đề phòng trường hợp các tài liệu lại được di chuyển, đây là các thông tin liên quan về ...

Tạo môi trường ảo Python

Cài đặt virtualenv qua pip:

$ install virtualenv

Kiểm tra cài đặt:

$ virtualenv --version

Theo tùy chọn, et biến môi trường VIRTUALENVWRAPPER_PYTHONđể thay đổi phiên bản mặc định của python được sử dụng bởi môi trường ảo, ví dụ: sử dụng Python 3:

$ export VIRTUALENVWRAPPER_PYTHON=$(which python3)

Theo tùy chọn, đặt biến môi trường WORKON_HOMEđể thay đổi thư mục mặc định mà môi trường ảo Python của bạn được tạo, chẳng hạn để sử dụng /opt/python_envs:

$ export WORKON_HOME=/opt/python_envs

Tạo môi trường ảo cho dự án:

$ cd my_project_folder
$ virtualenv my_virtual_env_name

Kích hoạt môi trường ảo mà bạn vừa tạo. Giả sử bạn cũng đặt WORKON_HOME=/opt/python_envs:

$ source $WORKON_HOME/my_virtual_env_name/bin/activate

Cài đặt bất kỳ gói Python nào mà dự án của bạn yêu cầu, sử dụng một trong hai phương pháp sau.

Phương pháp 1 - Cài đặt bằng pipdòng lệnh:

$ pip install python_package_name1
$ pip install python_package_name2

Phương pháp 2 - Cài đặt bằng requests.txttệp:

$ echo "python_package_name1" >> requests.txt
$ echo "python_package_name2" >> requests.txt
$ pip install -r ./requests.txt

Tùy chọn, nhưng rất khuyến khích, cài đặt virtualenvwrapper. Nó chứa các lệnh hữu ích để làm việc với môi trường Python ảo dễ dàng hơn:

$ pip install virtualenvwrapper
$ source /usr/local/bin/virtualenvwrapper.sh

Trên Windows, cài đặt virtualenvwrapperbằng:

$ pip install virtualenvwrapper-win

Cách sử dụng cơ bản của virtualenvwrapper Tạo một môi trường ảo mới:

$ mkvirtualenv my_virtual_env_name

Liệt kê tất cả các môi trường ảo:

$ lsvirtualenv

Kích hoạt môi trường ảo:

$ workon my_virtual_env_name

Xóa môi trường ảo (thận trọng! Điều này là không thể thay đổi được!):

$ rmvirtualenv my_virtual_env_name

Tôi hy vọng điều này giúp đỡ!


Tài liệu bạn đã liên kết gặp lỗi 404. Bạn có thể cập nhật liên kết không?
user3243242

1
@ user3243242 Như bạn muốn! :-)
MikeyE

1

Tôi gặp vấn đề tương tự với mô-đun quaternion. Khi cập nhật các mô-đun với conda, phiên bản numpy không được cập nhật ^ lên phiên bản cuối cùng. Nếu buộc cập nhật bằng lệnh pip pip install - nâng cấp numpy + cài đặt mô-đun quaternion bằng pip install --user numpy numpy-quaternion, sự cố đã được khắc phục. Có thể vấn đề đến từ phiên bản numpy. Đây là kết quả thực thi:

Python 2.7.14 |Anaconda custom (64-bit)| (default, Oct 15 2017, 03:34:40) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.

>>> import numpy as np
>>> print np.__version__
1.14.3
>>>

(base) C:\Users\jc>pip install --user numpy numpy-quaternion
Requirement already satisfied: numpy in d:\programdata\anaconda2\lib\site-packages (1.14.3)
Collecting numpy-quaternion
  Downloading https://files.pythonhosted.org/packages/3e/73/5720d1d0a95bc2d4af2f7326280172bd255db2e8e56f6fbe81933aa00006/numpy_quaternion-2018.5.10.13.50.12-cp27-cp27m-win_amd64.whl (49kB)
    100% |################################| 51kB 581kB/s
Installing collected packages: numpy-quaternion
Successfully installed numpy-quaternion-2018.5.10.13.50.12

(base) C:\Users\jc>python
Python 2.7.14 |Anaconda custom (64-bit)| (default, Oct 15 2017, 03:34:40) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.

>>> import numpy as np
>>> import quaternion
>>> 

0

Đối với những người sử dụng Anaconda Python:

conda update anaconda

0

Bạn có thể muốn kiểm tra phiên bản matplotlib của mình.

Bằng cách nào đó, tôi đã cài đặt một phiên bản dành cho nhà phát triển của matplotlib, điều này đã gây ra sự cố. Hạ cấp xuống bản phát hành ổn định đã khắc phục sự cố.

Người ta cũng có thể thử python -v -c 'import YOUR_PACKAGE' 2>&1 | lessxem vấn đề xảy ra ở đâu và nếu các dòng trên bị lỗi có thể cung cấp cho bạn một số gợi ý.


0

Bạn cũng có thể muốn kiểm tra của bạn $PYTHONPATH. Tôi đã thay đổi của tôi ~/.bashrcđể có được một gói khác hoạt động.

Để kiểm tra đường dẫn của bạn:

    echo $PYTHONPATH

Để thay đổi đường dẫn của bạn (tôi sử dụng nano nhưng bạn có thể chỉnh sửa theo cách khác)

    nano ~/.bashrc

Tìm dòng với export PYTHONPATH...

Sau khi thực hiện các thay đổi, đừng quên

   source ~/.bashrc

0

Tôi đã gặp lỗi tương tự khi cố gắng khởi chạy spyder. "RuntimeError: mô-đun được biên dịch dựa trên phiên bản API 0xb nhưng phiên bản này của numpy là 0xa". Lỗi này xuất hiện sau khi tôi sửa đổi phiên bản numpy của máy do nhầm lẫn (tôi nghĩ rằng tôi đang ở trong một venv). Nếu bạn đang sử dụng spyder được cài đặt với conda, lời khuyên của tôi là chỉ sử dụng conda để quản lý gói.

Điều này phù hợp với tôi:

conda install anaconda

(Tôi có căn hộ nhưng không có anaconda trên máy của tôi) sau đó:

conda update numpy

0

Tôi phải đối mặt với vấn đề tương tự do sự mâu thuẫn tài liệu. Trang này cho biết các ví dụ trong tài liệu hoạt động tốt nhất với python 3.x: https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_setup/py_intro/py_intro.html#intro , trong khi trang cài đặt này có liên kết đến python 2.7 và các phiên bản cũ hơn của numpy và matplotlib: https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_setup/py_setup_in_windows/py_setup_in_windows.html

Thiết lập của tôi như vậy: Tôi đã cài đặt Python 3.6 và 3.5, nhưng vì tài liệu OpenCv-python cho biết nó hoạt động tốt nhất với 2.7.x, nên tôi cũng đã cài đặt phiên bản đó. Sau khi tôi cài đặt numpy (trong thư mục Python27, không có pip nhưng với trình giải nén mặc định, vì pip không phải là một phần của cài đặt python 2.7 mặc định giống như trong 3.6), tôi đã RuntimeError: module compiled against API version a but this version of numpy isgặp lỗi này . Tôi đã thử nhiều phiên bản khác nhau của cả numpy và opencv, nhưng không có kết quả. Cuối cùng, tôi chỉ cần xóa numpy khỏi python27 (chỉ cần xóa thư mục trong gói trang web cũng như bất kỳ tệp nào có tên numpy còn lại khác) và cài đặt phiên bản mới nhất của numpy, matplotlib và opencv trong phiên bản Python3.6 bằng cách sử dụng pip no vấn đề. Đã chạy opencv kể từ đó.

Hy vọng điều này sẽ tiết kiệm cho ai đó một chút thời gian.



-1

Điều này phù hợp với tôi:

Của tôi pipkhông hoạt động sau khi nâng cấp, vì vậy điều đầu tiên tôi cần làm là sửa nó với

sudo gedit /usr/bin/pip

Thay đổi dòng

from pip import main

đến

from pip._internal import main

Sau đó,

 sudo pip install -U numpy

-1

Lệnh này đã giải quyết vấn đề của tôi.

pip3 install --upgrade numpy 
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.