Ответ 1
обновление numpy до последней версии
pip install numpy --upgrade
код:
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 HMz DDR3
Я уже пытался обновить numpy. Мне пришлось добавить cv.py в папку python2.7 в Spyder-Py2, есть ли что-то еще, что мне нужно добавить?
обновление numpy до последней версии
pip install numpy --upgrade
Проверьте путь
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, и все было хорошо.
Это сработало для меня:
sudo pip install numpy --upgrade --ignore-installed
Вероятно, вы используете 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
Я столкнулся с той же проблемой сегодня вечером. Это оказалось проблемой, когда у меня было установлено несколько пакетов. Старая версия была установлена в /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, используя Руководство по автостопу по Python, в частности раздел "Нижний уровень: virtualenv". Я знаю, что сначала мне нужно было настроить виртуальную среду, но я устал и ленился. О, хорошо, урок усвоен!
(Обновить)
На случай, если документы будут перенесены снова, вот соответствующие биты на...
Создание виртуальной среды Python
Установите virtualenv через pip:
$ install virtualenv
Проверьте установку:
$ virtualenv --version
При желании VIRTUALENVWRAPPER_PYTHON
переменную среды 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
Я надеюсь, что это поможет!
Для решения проблемы сделайте следующее:
Сначала удалите NumPy
sudo pip uninstall numpy
Установите numpy с опцией --no-cache-dir
sudo pip install --no-cache-dir numpy
И указать любую конкретную версию, например, 1.14.2
sudo pip install --no-cache-dir numpy==1.14.2
Для тех, кто использует anaconda Python:
conda update anaconda
У меня была такая же ошибка при попытке запустить spyder. Msgstr "RuntimeError: модуль скомпилирован для версии API 0xb, но эта версия numpy - 0xa". Эта ошибка появилась, как только я по ошибке изменил цифровую версию своей машины (мне показалось, что я в venv). Если вы используете spyder, установленный с conda, я советую использовать только conda для управления пакетами.
Это работает для меня:
conda install anaconda
(У меня была конда, но на моей машине не было анаконды) тогда:
conda update numpy
Следующая команда работала для меня:
conda install -c anaconda numpy
Возможно, вы захотите проверить версию matplotlib.
Как-то я установил dev-версию matplotlib, которая вызвала проблему. Исправлено его понижение до стабильного выпуска.
Можно также попробовать python -v -c 'import YOUR_PACKAGE' 2>&1 | less
, чтобы увидеть, где произошла ошибка, и если строки выше ошибки могут дать вам несколько советов.
Вы также можете проверить свой $PYTHONPATH
. Я изменил мой в ~/.bashrc
, чтобы получить еще один пакет для работы.
Чтобы проверить свой путь:
echo $PYTHONPATH
Изменить свой путь (я использую nano, но вы можете редактировать другой способ)
nano ~/.bashrc
Найдите строку с export PYTHONPATH
...
После внесения изменений не забывайте
source ~/.bashrc
Я получил ту же проблему с модулем кватерниона. При обновлении модулей с помощью conda версия numpy не обновляется до последней. Если принудительное обновление с помощью команды pip pip install --upgrade numpy + установить модуль кватерниона с помощью pip install --user numpy numpy-quaternion, проблема устранена. Может быть, проблема исходит от обалденной версии. Вот результат выполнения:
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
>>>
Я столкнулся с той же проблемой из-за несоответствий в документации. На этой странице сказано, что примеры в документации лучше всего работают с 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 по умолчанию, как в RuntimeError: module compiled against API version a but this version of numpy is
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.
Надеюсь, это сэкономит кому-то время.
Это работает для меня:
Мой pip
не работает после обновления, поэтому первое, что мне нужно сделать, чтобы исправить это с
sudo gedit /usr/bin/pip
Изменить линию
from pip import main
в
from pip._internal import main
Затем,
sudo pip install -U numpy
Эта команда решила мою проблему.
pip3 install --upgrade numpy