2015-11-22 60 views
47

代碼:RuntimeError:模塊編譯針對API版本,但這個版本numpy的是9

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埃爾卡皮坦的Macbook Air,1.3 GHz的英特爾Core i5,8 GB 1600 HMz DDR3

我已經嘗試更新numpy。我必須將cv.py添加到Spyder-Py2中的python2.7文件夾中是否還有其他需要添加的內容?

回答

6

您可能正在運行安裝在系統文件夾中的numpy版本較低的Mac默認(/ usr/bin/python)。使用opencv獲得python的最簡單方法是使用brew將python和opencv安裝到/ usr/local並運行/ usr/local/bin/python。

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

Becareful!它可能不是一個好主意,你可以安裝多個版本的Python。你可能會像這個人一樣:http://stackoverflow.com/questions/14117945/too-many-different-python-versions-on-my-system-and-causing-problems – Jakobovski

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/ 初始化 .pyc文件和一切都很好。

+0

也爲我工作。謝謝 –

+0

已經工作了,但需要用'pip install numpy -I'重新安裝它(我的參數說的安裝忽略了當前的安裝)。 –

56

升級numpy的最新版本

pip install numpy --upgrade 
+1

這解決了問題,但是爲什麼?出現此問題是因爲安裝了兩個numpy。升級如何解決這個問題? – MAZDAK

+0

這不適合我:'需求已經是最新的:numpy in/home/ubuntu/miniconda/lib/python3.6/site-packages' –

+0

如果你使用默認的python導入手電筒,它可能會解決這個問題,它有一箇舊版本的numpy。 –

1

對於使用Python的蟒蛇那些:

conda update anaconda 
3

我碰到了同樣的問題在今晚。事實證明,我安裝了多個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。

有一兩件事,幫助被打開一個執行以下代碼蟒蛇會話:

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。我還使用docs here設置了一個虛擬Python環境。我知道我應該首先設置一個虛擬環境,但我很累而且很懶。哦,經驗教訓!

我希望這個幫助!

0

你可能想檢查你的matplotlib版本。

不知何故,我安裝了一個導致問題的matplotlib開發版本。降級到穩定版本修復了它。

也可以嘗試python -v -c 'import YOUR_PACKAGE' 2>&1 | less查看問題發生的位置,以及上面的錯誤行可以給你一些提示。

0

您可能還想檢查您的$PYTHONPATH。我已經改變了我的~/.bashrc爲了得到另一個包工作。

要檢查您的路徑:

echo $PYTHONPATH 

要更改您的路徑(我使用nano,但你可以編輯的另一種方式)

nano ~/.bashrc 

查找與export PYTHONPATH行...

做出修改後,別忘了

source ~/.bashrc 
2

這爲我工作:

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

我嘗試推出的Spyder時有同樣的錯誤。 「RuntimeError:針對API版本0xb編譯的模塊,但此版本的numpy是0xa」。 一旦我錯誤地修改了我的機器的numpy版本(我以爲我在venv中),就會出現這個錯誤。如果您使用的是使用conda安裝的spyder,我的建議是隻使用conda來管理軟件包。

這個工作對我來說:

conda install anaconda 

(我不得不暢達,但我的機器上沒有水蟒) 則:

conda update numpy 
相關問題