最近尝试在MAC(OS X 10.11 El Capitan)上安装Caffe 以及Python接口遇到了一些问题但是官方安装教程上并没有提出这些问题的解决办法搜索了很久(主要在于Python接口上) 终于找到了解决办法

其实Caffe的安装分两步:安装依赖+编译源码

首先是安装依赖:

【必要依赖】:

官方推荐用homebrew来安装:

brew install -vd snappy leveldb gflags glog szip lmdb
# 添加science源来安装 OpenCV 和 hdf5
brew tap homebrew/science
brew install hdf5 opencv

或者使用Anaconda Python这个工具包含了大量的Python工具包来解决以上依赖问题而且安装新的软件包也特别容易。如果用Anaconda Python的话HDF5已经包含其中了 可以略过。并且opencv这里有两行需要改一下:

brew edit opencv

然后找到跟下面两行类似的改成如下(改变的他Python路径用Anaconda的Python而不是系统自带的)

  -DPYTHON_LIBRARY=#{py_prefix}/lib/libpython2.7.dylib
-DPYTHON_INCLUDE_DIR=#{py_prefix}/include/python2.7

然后是BOOST和BOOST-Python 安装这个主要是为了之后Python接口的编译

# with Python pycaffe needs dependencies built from source
brew install --build-from-source --with-python -vd protobuf
brew install --build-from-source -vd boost boost-python

BLAS部分:网上有人说系统自带的不稳定推荐换成MKL但是我没有换也是可以用的。

Python接口:从Github上把Caffe下载下来解压后用命令行进入其中的Python文件夹执行以下命令来安装Python的依赖:

for req in $(cat requirements.txt); do pip install $req; done

用MAKE指令来编译:

在编译之前我们需要修改make.config的几个地方

首先将make.config.example的.example后缀删除

然后将CPU_ONLY := 1 的注释去掉(删除#)因为我的电脑是AMD的显卡没法使用CUDA所以无法进行GPU加速

然后就是后面的Python路径,用Anaconda Python的话将下面的注释去掉:

 ANACONDA_HOME := $(HOME)/anaconda
PYTHON_INCLUDE := $(ANACONDA_HOME)/include \
$(ANACONDA_HOME)/include/python2.7 \
$(ANACONDA_HOME)/lib/python2.7/site-packages/numpy/core/include \

这个地方一定要注意路径正确 按照自己机器的配置来。

接下来就可以MAKE了

make all
make test
make runtest
make pycaffe

如果没有报错并且运行完runtest之后看到了一路绿色pass那么恭喜你安装完了这个时候他的CPP接口是可以用的但是Python不一定

将caffe/python路径放入你的PYTHONPATH中注意/path/to/caffe/python是你caffe的地址,注意更改。

export PYTHONPATH=/path/to/caffe/python:$PYTHONPATH

在命令行中进入Python尝试import caffe 如果不报错那么恭喜你Python接口也可以正常使用。

遇到的报错:

  1. 如果运行import caffe的时候提示 no module  那么说明你的PYTHONPATH有问题 注意更改
  2. 如果遇到了segmentation fault 那很有可能是你系统里也有多个版本的Python并且编译和运行的时候不是一个版本(通常是boost-Python链接的Python是系统自带Python而不是anaconda)。这个时候可以在编译的时候强制他们都用同一个Python。用otool -L指令来检查:
$ brew info boost
...
$ otool -L /usr/local/Cellar/boost/1.57.0/lib/libboost_system.dylib # this is one of the libs that caffe links against
...
/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.0.0)
...
$ brew info boost-python
...
$ otool -L /usr/local/Cellar/boost-python/1.57.0/lib/libboost_python.dylib
...
/usr/local/Frameworks/Python.framework/Versions/2.7/Python (compatibility version 2.7.0, current version 2.7.0)

注意其中的boost和boost-python的版本和路径需要更改。

我在Github上发现还有另一种解决方法,首先查看_caffe.so:

    otool -L python/caffe/_caffe.so

     如果他没有链接到你的anaconda Python上那么用下面的命令强制他链接上去就不会有segmentation fault的错误啦:

    install_name_tool -change "libpython2.7.dylib" "$HOME/anaconda/lib/libpython2.7.dylib" python/caffe/_caffe.so

 Reference:
  1.   Caffe offical installation
  2.     Github:Theory of Building Caffe on OS X
  3.      Github Issue#591

     
 

【记录】在MAC上安装caffe的更多相关文章

  1. 【mac上安装&配置&使用git】

    转自:https://www.jianshu.com/p/7edb6b838a2e 目录 安装git 创建ssh key.配置git 提交本地项目到GitHub 一.安装Git MAC 上安装Git主 ...

  2. mac上安装mongoDb以及简单使用

    年初粗略学习了下node,这好几个月没玩,突然发现已经忘完了,还是简单记录下基本知识,方便再次使用时资料查找. 一.mongoDb安装 在mac上安装了brew的情况下,可以直接执行命令 brew i ...

  3. Mac上安装配置Go语言,其实很简单(一)

    下载Go语言可以去:Go语言中文网 安装及自己选择是否修改GOPATH 下载下来后双击安装就好,使用 go version 查看安装版本: 在Mac上安装完成后,会自动设置一些环境变量,使用 go e ...

  4. 在Mac上安装Istio并使用,有丰富的监控Kiali、Grafana、Jaeger

    我最新最全的文章都在南瓜慢说 www.pkslow.com,文章更新也只在官网,欢迎大家来喝茶~~ 1 简介 之前在文章<服务网格Istio入门-详细记录Kubernetes安装Istio并使用 ...

  5. mac上安装lua

    一.背景 最近在操作redis的时候,有些时候是需要原子操作的,而redis中支持lua脚本,因此为了以后学习lua,此处记录一下 lua的安装. 二.mac上安装lua 其余的系统上安装lua步骤大 ...

  6. 在Mac上安装IntelliJ IDEA

    这篇文章旨在介绍如何在Mac系统上安装IntelliJ IDEA,至于IntelliJ IDEA的介绍和使用方法,大家另行查阅,本篇的文章不再详细阐述. 简短解说,IntelliJ IDEA是可以用来 ...

  7. Mac上安装brew

    用过ubuntu系统的都知道,上面有一个命令apt-get 很方便可以快速的安装很多软件 特别lamp环境 都是一键安装. 在mac上也有类似的命令 brew brew用法可以访问官网地址  http ...

  8. mac 上安装服务,查看服务,重启和关闭

    首先了解下的Mac的 homebrew ,官网:https://brew.sh/index_zh-cn.html 简单的说: Homebrew 能干什么? 答:使用 Homebrew 安装 Apple ...

  9. Mac上安装brew 包管理工具

    Mac 上的包管理工具对于开发者来说是一件非常方便的工具,能够有效的对包进行管理. 所以这篇博客就来简单的讲一下brew 的安装和一些基础命令. brew 全称叫做Homebrew . 1. 首先来说 ...

随机推荐

  1. 开源的excel读取库libxls在windows下的编译,且支持中文,全网首发

    转载请注明出处:http://www.cnblogs.com/superbi/p/5482516.html 到目前为止,网络和官网上并没有关于libxls在windows下支持中文的教程,也没有现成的 ...

  2. 快速了解常用XHTML基础

    运行效果: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w ...

  3. WinForm(C#)CheckedlistBox绑定数据,并获得选中的值(ValueMember)和显示文本(DisplayMember)

    本文中我将和大家讨论关于在WinForm开发中给CheckedlistBox空间绑定数据源,并获取控件中选中的所有元素的显示文本(DisplayMember)和对应的实际值(ValueMember)的 ...

  4. 概率dp-九度-1546-迷宫问题

    题目链接: http://ac.jobdu.com/problem.php?pid=1546 题目意思: 有一个起点S,多个出口E,#代表不能走,每次等概率的随机选择下一个可以行走的位置,求从S到出口 ...

  5. JAVA中的继承和覆盖

    java里面的继承是子类继承父类的一些方法和属性(除private属性和方法之外):对于父类的私有属性和方法子类是没有继承的.可是要想子类也能訪问到父类的私有属性,必须给私有属性以外界訪问的方法接口. ...

  6. 关于cocostudio加载UI json CCUIHELPER未声明问题

    查看官方的文档,在文档的最后添加了如何加载项目.如下代码: UILayer* ul =UILayer::create(); ul->addWidget(CCUIHELPER->create ...

  7. python一些技巧

    1. 使用目录管理 sys.path.append(sys.argv[0][:sys.argv[0].rfind('com'+os.sep+'abc')]) from com.abc.libs imp ...

  8. Java 数据类型转换(转换成字节型)

    package com.mystudypro.byteutil; import java.io.UnsupportedEncodingException; public class ConToByte ...

  9. HighCharts常用设置(摘抄笔录)

  10. iOS面试小题集锦

      1.Object-C有多继承吗?没有的话用什么代替? cocoa 中所有的类都是NSObject 的子类 多继承在这里是用protocol 委托代理 来实现的你不用去考虑繁琐的多继承 ,虚基类的概 ...