Mac下配置caffe的python接口

前言:

网上有很多caff安装教程,但是坑也不少。推荐一篇不错的:http://www.jianshu.com/p/cc16e2977e27

刚开始是想编译matlab接口的,毕竟对matlab比较熟悉,但是一直报错,在网上也找不到任何有效的解决办法,逼于无奈转战python。

编译python也不是一帆风顺的,刚开始在makeFileConfig中配置各种路径,make时报错,网上找不到解决方法,所以改用cmake。(这个过程是非常痛苦的)

在此建议用cmake进行编译,会省去很多不必要的麻烦,而且配置简单。

进入正题...

本文主要是解决配置python接口中遇到的问题:

1、make pytest时报错

/bin/sh:

python2: command not found

make[3]:

*** [CMakeFiles/pytest] Error 127

make[2]:

*** [CMakeFiles/pytest.dir/all] Error 2

make[1]:

*** [CMakeFiles/pytest.dir/rule] Error 2

make:

*** [pytest] Error 2

错误原因:找不到python2命令,Python版本问题

解决方法:到/usr/bin中查看是否有python2文件,没有的话肯定提示命令找不到。cd到出问题文件的路径:build/CMakeFiles/putest.dir/build.make修改python2为你bin里面有的python版本(我的是python2.7),重新运行,问题解决。

2、解决问题1后运行pytest出现问题:ImportError: No module named skimage.io  ImportError:No module named google.protobuf

解决方法:运行命令:sudo pip install protobuf(如果没有安装pip:sudo easy_install pip)

sudo pip scikit-image

那么问题来了,如果你是10.10之后的系统,就面临一个系统权限问题。

重启电脑,按住command + R进入恢复模式,选择左上角实用工具下的终端,输入csrutildisable回车,reboot,重启完美解决权限问题(csrutil enabl恢复SIP机制)

3、Exception: "dot" not found in path.

解决方法:brew installgraphviz(不能用pip安装)

pip uninstall pyparsing

pip install -Iv https://pypi.python.org/packages/source/p/pyparsing/pyparsing-1.5.7.tar.gz#md5=9be0fcdcc595199c646ab317c1d9a709

pip install pydot

4、'numpy/arrayobject.h' file not found

pip install numpy

如果你明明装了numpy,却报错,重新cmake..

5、运行make pytest时python崩溃

原因:mac自带python2.7.10版本bug,下载python2.7.13,然后重新跑。(注意不要卸载自带python,会出现很多问题,血的教训!还有,caffe不支持python3)跑程序时选择的环境是python2.7.13

安装2.7.13后,如果cmake时Python配置是这样的


libraries路径还是系统自带的Python2.7.10,则需要修改CMakeCache.txt


Mac下配置caffe的python接口_第1张图片

自己装的2.7.13在local下并没有include/python2.7和lib/libpython2.7.dylib,需要自己将2.7.13的相应文件链接到local下,命令为:

sudo ln -s /Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 /usr/local/include/python2.7

sudo ln -s /Library/Frameworks/Python.framework/Versions/2.7/Python /usr/local/lib/libpython2.7.dylib

修改好CMakeCache.txt后重新make pytest,ok!

-------分割线--------

Tips:

1、自己装的python会装在/Library目录下,系统自带的在/System/Library下.

2、usr/bin下是系统预装的可执行程序,usr/local/bin是用户放置自己可执行程序的地方,如果两个目录有相同的可执行程序,谁先执行受环境变量的影响

这里/usr/local/bin会先执行。

如有问题欢迎留言讨论

你可能感兴趣的:(Mac下配置caffe的python接口)