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即可。

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