RuntimeError: модуль, скомпільований за версією API a, але ця версія numpy - 9


76

Код:

import numpy as np
import cv

Консоль:

>>> 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
>>> 

Інформація про систему: OS X El Capitan, Macbook Air, 1,3 ГГц Intel Core i5, 8 ГБ 1600 ГГц DDR3

Я вже намагався оновити numpy. Мені довелося додати cv.py до папки python2.7 у Spyder-Py2, чи є ще щось, що мені потрібно додати?

Відповіді:


110

оновити numpy до останньої версії -

pip install numpy --upgrade

8
Це вирішує проблему, але ЧОМУ? Ця проблема виникає через те, що встановлено дві програми numpy. Як оновлення вирішує цю проблему ?!
— МАЗДАК

Для мене це не виправляє:Requirement already up-to-date: numpy in /home/ubuntu/miniconda/lib/python3.6/site-packages
— Гійом Шевальє

Це може вирішити проблему, якщо ви імпортуєте факел за допомогою пітона за замовчуванням, який має стару версію numpy.
— Семіх Коркмаз,

це спрацювало для мене при спробі імпортувати нещодавно встановлену піторху зimport torch
— динозавром

Це спрацювало для мене після видалення та перевстановлення python
— Seabass77

15

Перевірте шлях

import numpy
print numpy.__path__

Для мене це було /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy Тож я перемістив його на тимчасове місце

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

а потім наступного разу, коли я імпортував numpy, шлях був /Library/Python/2.7/site-packages/numpy/ init .pyc, і все було добре.


1
Працював і у мене. Дякую
— Марсель Коломб

3
Працював, але його потрібно було перевстановити за допомогою pip install numpy -I(аргумент capital i говорить «встановити», ігноруючи поточну інсталяцію, яку перемістили).
— Гійом Шевальє

9

Це спрацювало для мене:

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

Це спрацювало і на мене. У мене була та сама проблема, коли була встановлена ​​стара версія numpy, і я не зміг перемістити або видалити стару numpy
— Аміт Сінгх

4

Ймовірно, у вас встановлений Mac за замовчуванням (/ usr / bin / python), у якому в системних папках встановлена ​​старіша версія numpy. Найпростіший спосіб змусити python працювати з opencv - це використовувати brew, щоб встановити і python, і opencv в / usr / local та запустити / usr / local / bin / python.

brew install python
brew tap homebrew/science
brew install opencv

2
Будь обережний! Можливо, вам не вдається встановлювати кілька версій python. Ви можете в кінцевому підсумку , як цей хлопець: stackoverflow.com/questions/14117945 / ...
— Jakobovski

3

Щоб вирішити проблему, виконайте такі дії:

Спочатку видаліть numpy

sudo pip uninstall numpy

Встановіть NumPy з --no-кеш-каталог опцій

sudo pip install --no-cache-dir numpy

І вказати будь-яку конкретну версію, наприклад 1.14.2

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

Не вдається видалити "numpy". Це встановлений проект, і тому ми не можемо точно визначити, які файли йому належать, що призведе до часткового видалення.
— tong

2

Я натрапив на те саме питання сьогодні ввечері. Це виявилося проблемою, коли у мене було встановлено кілька пакетів numpy. Інстальовано старішу версію, /usr/lib/python2.7а правильну - у /usr/local/lib/python2.7.

До того ж я мав PYTHONPATH=/usr/lib/python2.7/dist-packages:/usr/local/lib/python2.7/dist-packages. PYTHONPATH знаходив стару версію numpy до правильної версії, тому, перебуваючи в інтерпретаторі Python, він імпортував стару версію numpy.

Одне, що допомогло, - це відкрити сеанс python, виконавши наступний код:

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

Це повинно сказати вам, яку саме версію використовує Python і де вона встановлена.

Щоб вирішити проблему, я змінився PYTHONPATH=/usr/local/lib/python2.7/dist-packages:/usr/lib/python2.7/dist-packages. І я також налаштував віртуальне середовище Python, використовуючи Посібник Hitchiker по Python , зокрема розділ під назвою "Нижній рівень: virtualenv". Я знаю, що спочатку я мав би налаштувати віртуальне середовище, але я втомився і лінувався. Ну добре, урок засвоєний!

(Оновлення)

На випадок, якщо документи буде переміщено знову, ось відповідні біти на ...

Створення віртуального середовища Python

Встановіть virtualenv через pip:

$ install virtualenv

Перевірте установку:

$ virtualenv --version

Необов’язково et змінну середовища, VIRTUALENVWRAPPER_PYTHONщоб змінити версію python за замовчуванням, що використовується віртуальними середовищами, наприклад, щоб використовувати Python 3:

$ export VIRTUALENVWRAPPER_PYTHON=$(which python3)

Необов’язково встановіть змінну середовища, WORKON_HOMEщоб змінити каталог за замовчуванням, у якому створюються віртуальні середовища Python, наприклад для використання /opt/python_envs:

$ export WORKON_HOME=/opt/python_envs

Створіть віртуальне середовище для проекту:

$ cd my_project_folder
$ virtualenv my_virtual_env_name

Активуйте віртуальне середовище, яке ви щойно створили. Припускаючи, що ви також встановили WORKON_HOME=/opt/python_envs:

$ source $WORKON_HOME/my_virtual_env_name/bin/activate

Встановіть будь-які пакунки Python, які вимагає ваш проект, використовуючи будь-який із наступних двох методів.

Спосіб 1 - Встановіть за допомогою pipкомандного рядка:

$ pip install python_package_name1
$ pip install python_package_name2

Спосіб 2 - Встановіть за допомогою requests.txtфайлу:

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

За бажанням, але настійно рекомендується, встановіть virtualenvwrapper. Він містить корисні команди для спрощення роботи з віртуальними середовищами Python:

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

В ОС Windows встановлюйте virtualenvwrapperза допомогою:

$ pip install virtualenvwrapper-win

Основне використання virtualenvwrapper Створіть нове віртуальне середовище:

$ mkvirtualenv my_virtual_env_name

Перелічіть усі віртуальні середовища:

$ lsvirtualenv

Активуйте віртуальне середовище:

$ workon my_virtual_env_name

Видаліть віртуальне середовище (обережно! Це незворотно!):

$ rmvirtualenv my_virtual_env_name

Я сподіваюся, що це допоможе!


Документ, на який ви зв’язали, містить помилку 404. Не могли б ви оновити посилання?
— user3243242

1
@ user3243242 Як ти хочеш! :-)
— MikeyE 02

1

У мене така ж проблема з модулем quaternion. Під час оновлення модулів за допомогою conda версія numpy не оновлюється до останньої. Якщо примусове оновлення командою pip pip install --upgrade numpy + install quaternion module за допомогою pip install --user numpy numpy-quaternion, проблема вирішена. Можливо, проблема виходить із версії numpy. Ось результат виконання:

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

Можливо, ви захочете перевірити свою версію matplotlib.

Якось я встановив розробницьку версію matplotlib, яка спричинила проблему. Виправлено перехід до стабільного випуску.

Можна також спробувати python -v -c 'import YOUR_PACKAGE' 2>&1 | lessпобачити, де сталася проблема, і чи можуть рядки вище помилки дати вам підказки.


0

Ви також можете перевірити свій $PYTHONPATH. Я змінив свій ~/.bashrc, щоб отримати ще один пакет для роботи.

Щоб перевірити свій шлях:

    echo $PYTHONPATH

Щоб змінити свій шлях (я використовую nano, але ви можете відредагувати іншим способом)

    nano ~/.bashrc

Шукайте лінію з export PYTHONPATH...

Після внесення змін не забувайте це робити

   source ~/.bashrc

0

У мене була та ж помилка при спробі запустити spyder. Msgstr "RuntimeError: модуль скомпільований щодо API версії 0xb, але ця версія numpy має значення 0xa". Ця помилка з’явилася після того, як я помилково змінив версію numpy своєї машини (я думав, що потрапив у ВЕНВ). Якщо ви використовуєте spyder, встановлений з conda, моя порада полягає в тому, щоб використовувати conda лише для управління пакетом.

Це працює для мене:

conda install anaconda

(У мене була конда, але на моїй машині не було анаконди). Тоді:

conda update numpy

0

Я зіткнувся з тією ж проблемою через невідповідність документації. На цій сторінці зазначено, що приклади в документах найкраще працюють з python 3.x: https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_setup/py_intro/py_intro.html#intro , тоді як ця сторінка інсталяції має посилання на python 2.7 та старіші версії numpy та matplotlib: https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_setup/py_setup_in_windows/py_setup_in_windows.html

Моє налаштування було таким: у мене вже були встановлені Python 3.6 і 3.5, але оскільки документи OpenCv-python сказали, що вони найкраще працюють з 2.7.x, я також встановив цю версію. Після того, як я встановив numpy (у каталозі Python27, без pip, але з екстрактором за замовчуванням, оскільки pip не є частиною інсталяції за замовчуванням python 2.7, як у 3.6), я зіткнувся з цією RuntimeError: module compiled against API version a but this version of numpy isпомилкою. Я спробував багато різних версій і numpy, і opencv, але безрезультатно. Нарешті, я просто видалив numpy з python27 (просто видаліть папку в пакунках сайту, а також будь-які інші файли з іменем numpy) і встановив останні версії numpy, matplotlib та opencv у версії Python3.6, використовуючи pip no проблема. З тих пір працює на opencv.

Сподіваюся, це економить комусь час.



-1

Це працює для мене:

Я pipне працюю після оновлення, тому перше, що мені потрібно зробити, це виправити це за допомогою

sudo gedit /usr/bin/pip

Змініть рядок

from pip import main

до

from pip._internal import main

Тоді,

 sudo pip install -U numpy

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.