1,由于我原来一直没有编译py27版本的 lib 所有 出显各种不匹配 ,重新便lib ,all ,test
2,发现搭建的py27 环境缺少匹配的库 conda一路安装
pip install opencv-python #cv2
3,ImportError: cannot import name cbook
conda install matplotlib=2.0.2
基本确定版本不匹配,安装低版本的matplotlib
发现又要从新编译caffe的部分
回去编译caffe发现protobuf 问题
protobuf 版本冲突 版本过低 或者路径不对
修改如下
第一坑:google.protobuf相关的问题 我在配置caffe的时候遇到的最多的,最棘手的就是google.protobuf的问题,真的是处处都有她的婀娜多姿身影。 第一砖:#error This file was generated by an older version of protoc which is 这个问题可能还有另一种形式 :#error This file was generated by an newer version of protoc which is 。通过older和newer我们可以判断,这是protobuf包的版本不匹配的问题。通过google发现这篇文章,解决了我的问题。在你为在百度找不到答案而的绝望时候,别忘了去google,相信你一定会体会到什么叫山重水复疑无路,柳暗花明又一村的。 具体的解决方法是,首先是使用protoc --version 查看你的系统中libprotobuf-dev的版本,我的输出 protobuf 2.6.1。然后使用source activate 环境名 激活你caffe中Makefile.config文件中配置的python环境,我的是source activate caffepy27 。然后使用 protoc –version 查看你的python环境中的libprotobuf-dev的版本。我的输出是protobuf 3.5.1。很显然,编译caffe的时候找到了两个版本的protobuf。我的建议是无论两个版本的protobuf是不是相同版本,都卸载掉。
卸载的命令是:
conda uninstall libprotobuf
conda uninstall protobuf
1 2 注意,一定要libprotobuf和protobuf都卸载掉。 编译成功后,在运行代码的时候python可能会提示找不到protobuf模块,这时候我们再使用 conda install protobuf 将protobuf模块安装上就可以了。以后再编译caffe的时候如果冲突,再卸,再装。。。一把老泪… * 总之,出现该问题的解决方法是,卸载python中冲突的protobuf和libprotobuf。
可以在Makefile文件中直接指定protoc路径
命令 whereis protoc 可以查看哪些路径下安装了protoc
命令which protoc 可以查看默认选用protoc的路径
命令 protoc --version 可以查看当前protoc版本
指定protoc的版本可以在 Makefile文件内修改
在Makefile 中修改这两句:
$(Q)protoc --proto_path=$(PROTO_SRC_DIR) --cpp_out=$(PROTO_BUILD_DIR) $<
$(Q)protoc --proto_path=$(PROTO_SRC_DIR) --python_out=$(PY_PROTO_BUILD_DIR) $<
为
$(Q)/usr/bin/protoc --proto_path=$(PROTO_SRC_DIR) --cpp_out=$(PROTO_BUILD_DIR) $<
$(Q)/usr/bin/protoc --proto_path=$(PROTO_SRC_DIR) --python_out=$(PY_PROTO_BUILD_DIR) $<
即把开头的"protoc"补全路径即可 (/usr/bin/protoc即为自己向指定给的版本路径)