RuntimeError: Modul kompiliert gegen API-Version a, aber diese Version von numpy ist 9


76

Code:

import numpy as np
import cv

Konsole:

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

Systeminfo: OS X El Capitan, Macbook Air, 1,3 GHz Intel Core i5, 8 GB 1600 HMz DDR3

Ich habe bereits versucht, numpy zu aktualisieren. Ich musste cv.py zum Ordner python2.7 in Spyder-Py2 hinzufügen. Muss ich noch etwas hinzufügen?

Antworten:


110

Aktualisieren Sie numpy auf die neueste Version

pip install numpy --upgrade

8
Dies löst das Problem, aber WARUM? Dieses Problem tritt auf, weil zwei Nummern installiert sind. Wie löst ein Upgrade dieses Problem?!
MAZDAK

Dies behebt nicht für mich:Requirement already up-to-date: numpy in /home/ubuntu/miniconda/lib/python3.6/site-packages
Guillaume Chevalier

Es könnte das Problem lösen, wenn Sie Fackel mit Ihrer Standardpython importieren, die eine ältere Version von numpy hat.
Semih Korkmaz

Dies funktionierte für mich, als ich versuchte, neu installierte Pytorch mitimport torch
Dinosaurier

Dies funktionierte für mich nach der Deinstallation und Neuinstallation von Python
Seabass77

15

Überprüfen Sie den Pfad

import numpy
print numpy.__path__

Für mich war dies /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy. Also habe ich es an einen temporären Ort verschoben

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

und dann, wenn ich das nächste Mal numpy importierte, war der Pfad /Library/Python/2.7/site-packages/numpy/ init .pyc und alles war gut.


1
Hat auch für mich gearbeitet. Vielen Dank
Marcel Colomb

3
Hat funktioniert, musste aber neu installiert werden pip install numpy -I(das Argument von Capital I besagt, dass die Installation installiert werden soll, während die aktuelle Installation ignoriert wird, die verschoben wurde).
Guillaume Chevalier

9

Das hat bei mir funktioniert:

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

Das hat auch bei mir funktioniert. Ich hatte das gleiche Problem, wo eine alte Numpy-Version installiert war und ich nicht in der Lage war, alte Numpy zu verschieben oder zu entfernen
Amit Singh

4

Sie führen wahrscheinlich den Mac-Standard (/ usr / bin / python) aus, auf dem eine ältere Version von numpy in den Systemordnern installiert ist. Der einfachste Weg, um Python mit opencv zum Laufen zu bringen, besteht darin, mit Brew sowohl Python als auch opencv in / usr / local zu installieren und / usr / local / bin / python auszuführen.

brew install python
brew tap homebrew/science
brew install opencv

2
Achtung! Es ist möglicherweise keine gute Idee, mehrere Python-Versionen zu installieren. Sie können bis wie dieser Kerl am Ende: stackoverflow.com/questions/14117945/...
Jakobovski

3

Gehen Sie wie folgt vor, um das Problem zu lösen:

Deinstallieren Sie zuerst numpy

sudo pip uninstall numpy

Installieren Sie numpy mit der Option --no-cache-dir

sudo pip install --no-cache-dir numpy

Und um eine bestimmte Version anzugeben, z. B. 1.14.2

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

'Numpy' kann nicht deinstalliert werden. Es ist ein von distutils installiertes Projekt und daher können wir nicht genau bestimmen, welche Dateien dazu gehören, was nur zu einer teilweisen Deinstallation führen würde.
Tong

2

Ich bin heute Abend auf dasselbe Problem gestoßen. Es stellte sich als Problem heraus, bei dem mehrere numpy-Pakete installiert waren. Eine ältere Version wurde installiert /usr/lib/python2.7und die richtige Version wurde installiert /usr/local/lib/python2.7.

Zusätzlich hatte ich PYTHONPATH=/usr/lib/python2.7/dist-packages:/usr/local/lib/python2.7/dist-packages. PYTHONPATH hat die ältere Version von numpy vor der richtigen Version gefunden. Wenn es sich also im Python-Interpreter befindet, wird die ältere Version von numpy importiert.

Eine Sache, die geholfen hat, war das Öffnen einer Python-Sitzung und das Ausführen des folgenden Codes:

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

Das sollte Ihnen genau sagen, welche Version Python verwendet und wo es installiert ist.

Um das Problem zu beheben, habe ich geändert PYTHONPATH=/usr/local/lib/python2.7/dist-packages:/usr/lib/python2.7/dist-packages. Außerdem habe ich mithilfe des Hitchiker's Guide to Python eine virtuelle Python-Umgebung eingerichtet , insbesondere im Abschnitt "Untere Ebene: virtualenv". Ich weiß, ich hätte zuerst eine virtuelle Umgebung einrichten sollen, aber ich war müde und faul. Na ja, Lektion gelernt!

(Aktualisieren)

Nur für den Fall, dass die Dokumente erneut verschoben werden, finden Sie hier die relevanten Informationen zu ...

Erstellen einer virtuellen Python-Umgebung

Installieren Sie virtualenv über pip:

$ install virtualenv

Testen Sie die Installation:

$ virtualenv --version

Optional können Sie die Umgebungsvariable VIRTUALENVWRAPPER_PYTHONund die Standardversion von Python ändern, die von virtuellen Umgebungen verwendet wird, z. B. um Python 3 zu verwenden:

$ export VIRTUALENVWRAPPER_PYTHON=$(which python3)

Legen Sie optional die Umgebungsvariable fest WORKON_HOME, um das Standardverzeichnis zu ändern, in dem Ihre virtuellen Python-Umgebungen erstellt werden, z. B. um Folgendes zu verwenden /opt/python_envs:

$ export WORKON_HOME=/opt/python_envs

Erstellen Sie eine virtuelle Umgebung für ein Projekt:

$ cd my_project_folder
$ virtualenv my_virtual_env_name

Aktivieren Sie die soeben erstellte virtuelle Umgebung. Angenommen, Sie setzen auch WORKON_HOME=/opt/python_envs:

$ source $WORKON_HOME/my_virtual_env_name/bin/activate

Installieren Sie alle für Ihr Projekt erforderlichen Python-Pakete mit einer der beiden folgenden Methoden.

Methode 1 - Installation über die pipBefehlszeile:

$ pip install python_package_name1
$ pip install python_package_name2

Methode 2 - Installation mit einer requests.txtDatei:

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

Optional, aber sehr zu empfehlen, installieren virtualenvwrapper. Es enthält nützliche Befehle, um die Arbeit mit virtuellen Python-Umgebungen zu vereinfachen:

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

Installieren Sie virtualenvwrapperunter Windows Folgendes :

$ pip install virtualenvwrapper-win

Grundlegende Verwendung von virtualenvwrapper Erstellen Sie eine neue virtuelle Umgebung:

$ mkvirtualenv my_virtual_env_name

Alle virtuellen Umgebungen auflisten:

$ lsvirtualenv

Aktivieren Sie eine virtuelle Umgebung:

$ workon my_virtual_env_name

Löschen Sie eine virtuelle Umgebung (Vorsicht! Dies ist irreversibel!):

$ rmvirtualenv my_virtual_env_name

Ich hoffe diese Hilfe!


Das Dokument, mit dem Sie verknüpft haben, gibt einen 404-Fehler aus. Könnten Sie den Link aktualisieren?
user3243242

1
@ user3243242 Wie du willst! :-)
MikeyE

1

Ich habe das gleiche Problem mit dem Quaternion-Modul. Beim Aktualisieren von Modulen mit conda wird die numpy-Version nicht auf die letzte aktualisiert. Wenn das Update mit dem Pip-Befehl pip install --upgrade numpy + install quaternion module durch pip install --user numpy numpy-quaternion erzwungen wird, ist das Problem behoben. Möglicherweise kommt das Problem von der Numpy-Version. Hier das Ausführungsergebnis:

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

Für diejenigen, die Anaconda Python verwenden:

conda update anaconda

0

Vielleicht möchten Sie Ihre matplotlib-Version überprüfen.

Irgendwie habe ich eine Dev-Version von matplotlib installiert, die das Problem verursacht hat. Ein Downgrade auf eine stabile Version hat das Problem behoben.

Man kann auch versuchen python -v -c 'import YOUR_PACKAGE' 2>&1 | lesszu sehen, wo das Problem aufgetreten ist und ob die obigen Zeilen Fehler Ihnen einige Hinweise geben können.


0

Vielleicht möchten Sie auch Ihre überprüfen $PYTHONPATH. Ich hatte meine geändert ~/.bashrc, um ein anderes Paket zum Laufen zu bringen.

So überprüfen Sie Ihren Pfad:

    echo $PYTHONPATH

Um deinen Pfad zu ändern (ich benutze Nano, aber du könntest es auch anders bearbeiten)

    nano ~/.bashrc

Suchen Sie nach der Zeile mit export PYTHONPATH...

Vergessen Sie nicht, Änderungen vorzunehmen

   source ~/.bashrc

0

Ich hatte den gleichen Fehler beim Versuch, Spyder zu starten. "RuntimeError: Modul kompiliert gegen API-Version 0xb, aber diese Version von numpy ist 0xa". Dieser Fehler trat auf, als ich versehentlich die numpy-Version meines Computers geändert habe (ich dachte, ich wäre in einem Venv). Wenn Sie Spyder verwenden, auf dem conda installiert ist, empfehle ich, conda nur zum Verwalten von Paketen zu verwenden.

Das funktioniert bei mir:

conda install anaconda

(Ich hatte Conda, aber keine Anakonda auf meiner Maschine) Dann:

conda update numpy

0

Ich hatte das gleiche Problem aufgrund von Inkonsistenzen in der Dokumentation. Auf dieser Seite heißt es, dass die Beispiele in den Dokumenten am besten mit Python 3.x funktionieren: https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_setup/py_intro/py_intro.html#intro , während diese Installationsseite enthält Links zu Python 2.7 und älteren Versionen von numpy und matplotlib: https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_setup/py_setup_in_windows/py_setup_in_windows.html

Mein Setup war wie folgt: Ich hatte bereits Python 3.6 und 3.5 installiert, aber da OpenCv-Python-Dokumente sagten, dass es mit 2.7.x am besten funktioniert, habe ich auch diese Version installiert. Nachdem ich numpy installiert hatte (im Python27-Verzeichnis, ohne pip, aber mit dem Standardextraktor, da pip nicht wie in 3.6 Teil der Standardinstallation von Python 2.7 ist), wurde dieser RuntimeError: module compiled against API version a but this version of numpy isFehler ausgeführt. Ich habe viele verschiedene Versionen von numpy und opencv ausprobiert, aber ohne Erfolg. Zuletzt habe ich einfach numpy aus python27 gelöscht (löschen Sie einfach den Ordner in Site-Paketen sowie alle anderen verbleibenden numpy-benannten Dateien) und die neuesten Versionen von numpy, matplotlib und opencv in der Python3.6-Version mit pip no installiert Problem. Läuft seitdem opencv.

Hoffe das spart jemandem etwas Zeit.



-1

Das funktioniert bei mir:

Meines pipfunktioniert nach dem Upgrade nicht, also muss ich es zuerst reparieren

sudo gedit /usr/bin/pip

Ändern Sie die Zeile

from pip import main

zu

from pip._internal import main

Dann,

 sudo pip install -U numpy

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.