-
按照官方的教程编译源码,注意./scripts/build_raspbian.sh文件不在caffe2目录下,而在pytorch的根目录(caffe2源码已经合并如pytorch)。看脚本中开了两个线程进行编译,编译到83%左右出现过一次错误,原因是内存超限,不要紧,重新编译一次就好了。
-
需要的话要到pytorch/build目录下执行sudo make install。这一步是将编译好的库、可执行文件等放到系统目录等,不太记得make阶段是否做了,反正再执行一次也无害。
-
在python下执行
import caffe2
成功,证明安装成功。(我用的是系统自带的python,不是Anaconda安装的,自己编译库,感觉Anaconda坑会比较多,因为Anaconda自己维护了一个lib目录,经常因为和系统带的库版本不一样而出各种问题) -
执行
import caffe2.python.predictor.predictor_exporter as pe
报错
Import pycaffe lead to `__new__() got an unexpected keyword argument 'file'` Problem
原因是编译caffe2用的是系统的protoc,而在python中执行时会用python中用pip安装的protoc,两个protoc版本不同,因而导致该错误。可以用如下命令验证
pkg-config --modversion protobuf # 我的系统的protoc是3.5.0版本
pip list | grep protobuf # pip安装的版本是3.0.0版本
需要执行
sudo pip install --upgrade protobuf
# 没有指定版本,发现更新后是3.5.1,和系统的也不一样,但是不要紧,两者兼容,重新执行上面的命令发现OK了
- 执行
import caffe2.python.predictor.predictor_exporter as pe
报错
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/caffe2/python/predictor/predictor_exporter.py", line 10, in <module>
from caffe2.python import workspace, core, scope
File "/usr/local/lib/python2.7/dist-packages/caffe2/python/workspace.py", line 15, in <module>
from past.builtins import basestring
ImportError: No module named past.builtins
这个是因为缺个库,装上就好了sudo pip install future
。
- 如果更新protoc失败则有可能是pip版本太旧,可以先执行
pip install --upgrade pip
sudo pip install --upgrade pip
注意此处两条命令都需要执行,此处还没太搞明白为什么,只执行第一条的话,再次使用pip会报错如下:
Import Error:cannot import name main
网上有教程告诉你怎么改这个错,是pip版本问题引起的,需要修改pip源文件,但是改了会发现sudo pip
不能用了,pip和sudo pip版本必须一样,所以都更新了就好了。
网友评论