caffe python 接口,ImportError, No module named caffe

這種情況一般是沒有把caffe中的和python相關的內容的路徑添加到python的編譯路徑中
,或者caffe的pycaffe沒有編譯

1.首先編譯pycaffe

caffe build文件夾下編譯pycaffe

cd caffe/build/
make pycaffe

2.然後添加caffe的python搜索路徑

2.1官方解決方案:

臨時解決:
終端中輸入

export PYTHONPATH=/home/path/caffe/python:$PYTHONPATH

永久解決:
或者在bashrc或者zshrc裏添加上一句

2.2我的解決方案

在python腳本中添加

import sys
sys.path.append('/home/meng/software/caffe/caffe-1.0/python')

3 bug, import caffe,numpy問題

cd caffe/python
for req in $(cat requirements.txt );do sudo pip2 install $req;done

再講numpy版本降到1.11

sudo pip2 install -U numpy==1.11

模塊的搜索-導入機制

參考鏈接:(http://blog.csdn.net/u014596240/article/details/49820469)

模塊的搜索路徑
在一個模塊被導入時,PVM會在後臺從一系列路徑中搜索該模塊,其搜索過程如下:
1、在當前目錄下搜索該模塊;
2、在環境變量PYTHONPATH中指定的路徑列表中依次搜索;
3、在Python安裝路徑中搜索
事實上,PVM通過變量sys.path中包含的路徑來搜索,這個變量裏面包含的路徑列表就是上面提到的這些路徑信息,
模塊的搜索路徑都放在了sys.path列表中,如果缺省的sys.path中沒有含有自己的模塊或包的路徑,可以動態的加入(sys.path.apend)即可。

標準Import
Python中所有加載到內存的模塊都放在sys.modules。當import一個模塊時首先會在這個列表中查找是否已經加載了此模塊;
如果加載了則只是將模塊的名字加入到正在調用import的模塊的Local名字空間中。
如果沒有加載則從sys.path目錄中按照模塊名稱查找模塊文件,模塊文件可以是py、pyc、pyd,找到後將模塊載入內存,並加入到sys.modules中,並將名稱導入到當前的Local名字空間。
可以看出了,一個模塊不會重複載入。多個不同的模塊都可以用import引入同一個模塊到自己的Local名字空間,其實背後的PyModuleObject對象只有一個。
一個容易忽略的問題,import只能導入模塊,不能導入模塊中的對象(類、函數、變量等)。如一個模塊A(A.py)中有個函數getName,另一個模塊不能通過import A.getName將getName導入到本模塊,只能用import A。如果想只導入特定的類、函數、變量則用from A import getName即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章