export PYTHONPATH="/path/to/caffe-master/python"
記得"不是"export PYTHONPATH="/path/to/caffe-master/build/python"
也"不是"export PYTHONPATH="/path/to/caffe-master/python/caffe"
接著進入python的shell(or prompt),並執行
import caffe
過程中出現錯誤訊息Segmentation fault: 11
並且直接跳出python程式。Mac系統比較容易出現這個問題,根據網路上的資料[1],原因是Mac系統有內建python,但我們是用自己下載的版本(brew python or anaconda python),而在build pycaffe的時候,很容易混入系統內建python,造成連結錯誤。
打開build資料夾下的CMakeCache.txt,檢查裡面所有有關python的資訊,果然發現兩行
PYTHON_INCLUDE_DIR:PATH=/System/Library/Frameworks/Python.framework/Headers
PYTHON_LIBRARY:FILEPATH=/usr/lib/libpython2.7.dylib
表示python的include資料夾以及函式庫都聯結到系統的了。將其改為
PYTHON_INCLUDE_DIR:PATH=/Users/lindol/anaconda/include/python2.7
PYTHON_LIBRARY:FILEPATH=/Users/lindol/anaconda/lib/libpython2.7.dylib
並且重新編譯make clean
make all -j4
結束後再次執行import caffe
錯誤資訊改變:
ImportError: No module named google.protobuf.internal
表示我python的搜尋路徑中並沒有包含這個module。由於protobuf是由brew安裝的,若今天使用的是同樣brew安裝的python的話,這個module是會被找到的,但問題我們使用的是anaconda python,因此這個library的搜尋路徑並沒有被設定好。有關於設定python的搜尋路徑有許多方法,根據網路上的資料,我選擇使用增加usercustomize.py的方式[2][3]。在目錄下新增usercustomize.py:
/path/to/caffe-master/python/usercustomize.py
且內容是讓python找到protobuf的方法
import site; site.addsitedir('/usr/local/Cellar/protobuf/2.6.1/libexec/lib/python2.7/site-packages')
再次執行
import caffe
終於沒有錯誤。
在import caffe時,若出現
在import caffe時,若出現
No module named skimage.io
可使用pip install scikit-image
安裝相關模組[4]。
參考:
沒有留言:
張貼留言