2015-11-22 13 views
47

Codice:RuntimeError: modulo compilato con la versione API un ma questa versione di NumPy è 9

import numpy as np 
import cv 

Console:

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

System Info: OS X El Capitan, Macbook Air, 1.3 GHz Intel Core i5, 8 GB 1600 HMz DDR3

Ho già tentato di aggiornare numpy. Ho dovuto aggiungere cv.py alla cartella python2.7 in Spyder-Py2 c'è qualcos'altro che devo aggiungere?

risposta

6

Probabilmente si sta eseguendo il predefinito Mac (/ usr/bin/python) che ha una versione precedente di numpy installata nelle cartelle di sistema. Il modo più semplice per far funzionare python con opencv è usare brew per installare sia python che opencv in/usr/local ed eseguire/usr/local/bin/python.

brew install python 
brew tap homebrew/science 
brew install opencv 
+1

Becareful! Potrebbe non essere una buona idea installare più versioni di Python. Potresti finire come questo ragazzo: http://stackoverflow.com/questions/14117945/too-many-different-python-versions-on-my-system-and-causing-problems – Jakobovski

15

Controllare il percorso

import numpy 
print numpy.__path__ 

Per me questo è stato /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy Così mi sono trasferito a una temporanea posizionare

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 

e quindi la prossima volta che ho importato numpy il percorso era /Library/Python/2.7/site-packages/numpy/ init .pyc e tutto andava bene.

+0

ha funzionato anche per me. Grazie –

+0

Ha funzionato, ma era necessario reinstallarlo con 'pip install numpy -I' (l'argomento capitale i dice di installare mentre si ignora l'installazione corrente che è stata spostata). –

56

aggiornamento numpy alla versione più recente

pip install numpy --upgrade 
+1

Questo risolve il problema, ma PERCHÉ? Questo problema si presenta perché ci sono due numpy installati. In che modo l'aggiornamento risolve questo problema ?! – MAZDAK

+0

Questo non risolve per me: 'Requisito già aggiornato: numpy in/home/ubuntu/miniconda/lib/python3.6/site-packages' –

+0

Potrebbe risolvere il problema se si importa torcia usando il proprio python predefinito , che ha una versione precedente di numpy. –

1

Per coloro che utilizzando anaconda Python:

conda update anaconda 
3

ho incontrato lo stesso problema questa sera. Si è verificato un problema in cui ho installato più pacchetti numpy. Una versione precedente è stata installata in /usr/lib/python2.7 e la versione corretta è stata installata in /usr/local/lib/python2.7.

Inoltre, avevo PYTHONPATH=/usr/lib/python2.7/dist-packages:/usr/local/lib/python2.7/dist-packages. PYTHONPATH stava trovando la versione precedente di numpy prima della versione corretta, quindi quando all'interno dell'interprete Python importerebbe la versione precedente di numpy.

Una cosa che ha contribuito stava aprendo una sessione di pitone un eseguendo il seguente codice:

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

che dovrebbe dirvi esattamente quale versione di Python sta usando, e dove è installato.

Per risolvere il problema, ho cambiato PYTHONPATH=/usr/local/lib/python2.7/dist-packages:/usr/lib/python2.7/dist-packages. E ho anche installato un ambiente Python virtuale usando lo docs here. So che avrei dovuto impostare un ambiente virtuale in primo luogo, ma ero stanco e pigro. Oh bene, lezione imparata!

Spero che questo aiuto!

0

È possibile controllare la versione di matplotlib.

In qualche modo ho installato una versione di sviluppo di matplotlib che ha causato il problema. Il downgrade alla versione stabile lo ha risolto.

Si può anche provare python -v -c 'import YOUR_PACKAGE' 2>&1 | less per vedere dove si è verificato il problema e se le righe sopra l'errore possono darvi alcuni suggerimenti.

0

Si consiglia inoltre di controllare il numero $PYTHONPATH. Avevo cambiato il mio in ~/.bashrc per far funzionare un altro pacchetto.

Per controllare il vostro percorso:

echo $PYTHONPATH 

Per cambiare il vostro percorso (io uso nano, ma è possibile modificare un altro modo)

nano ~/.bashrc 

Cercare la linea con export PYTHONPATH ...

Dopo aver apportato le modifiche, non dimenticare di

source ~/.bashrc 
2

questo ha funzionato per me:

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

Ho avuto lo stesso errore quando prova a lanciare spyder. "RuntimeError: modulo compilato contro la versione API 0xb ma questa versione di numpy è 0xa". Questo errore è apparso una volta che ho modificato per errore la versione numpy della mia macchina (pensavo di essere in una venv). Se stai usando Spyder installato con conda, il mio consiglio è di usare solo conda per gestire il pacchetto.

questo funziona per me:

conda install anaconda 

(avevo Conda, ma non anaconda sulla mia macchina) poi:

conda update numpy 
Problemi correlati