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.