前言:
在mac上装caff,在网上找教程,虽然教程很多,但是坑也不少。推荐一篇不错的:http://www.jianshu.com/p/cc16e2977e27
刚开始是想编译matlab接口的,毕竟对matlab比较熟悉,但是一直报错,在网上也找不到任何有效的解决办法,逼于无奈转战python。
编译python也不是一帆风顺的,刚开始在makeFileConfig中配置各种路径,make时报错,网上找不到解决方法,所以改用cmake。(这个过程是非常痛苦的)
在此建议用cmake进行编译,会省去很多不必要的麻烦,而且配置简单。
进入正题...
本文主要提供编译过程中出现的问题的解决方法
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进入恢复模式,选择左上角实用工具下的终端,输入csrutil disable回车,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自带python版本bug,下载python2.7.13,然后重新跑。(注意不要卸载自带python,会出现很多问题,血的教训!)自己装的python会装在/Library目录下,系统自带的在/System/Library下,跑程序时选择的环境是python2.7.13
安装2.7.13后,如果cmake时Python配置是这样的
libraries路径还是系统自带的Python2.7.10,则需要修改CMakeCache.txt
如下:
注:自己装的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!
如有问题,欢迎留言讨论