caffe+anaconda3(python3.5 cpu版本)安装步骤

前言

经历三次安装caffe+anaconda3,每次都出现各种问题,终于决定写篇博客记录一下。

步骤

整体安装步骤如下:

  1. 下载安装anaconda3;
  2. 下载并编译caffe;
  3. 编译caffe的python接口;
    步骤并不多。。坑很多。。尤其anaconda3(caffe对anaconda3支持并不好)

第一步:下载并安装anaconda3

下载

	在anaconda官网下载Linux版本的anaconda3,最好下载python3.5版本的anaconda,即:anaconda3-4.2.0

安装

	在终端输入:bash Anaconda3-4.2.0-Linux-x86_64.sh
	一路enter或yes即可安装完毕。最后会在~/.bashrc即环境变量中配置anaconda路径,
	若没有配置,则自己手动配置:export PATH="/home/xxx/anaconda3/bin:$PATH"

第二步:安装依赖库

sudo apt-get install libprotobuf-dev   
sudo apt-get install libleveldb-dev   
sudo apt-get install libsnappy-dev   
sudo apt-get install libopencv-dev   
sudo apt-get install libhdf5-serial-dev   
sudo apt-get install protobuf-compiler  
sudo apt-get install --no-install-recommends libboost-all-dev
sudo apt-get install libatlas-base-dev 
sudo apt-get install python-dev (!!!这个后面再说)
sudo apt-get install libgflags-dev  
sudo apt-get install libgoogle-glog-dev   
sudo apt-get install liblmdb-dev  

安装就完事了

第三步:下载并编译caffe

下载caffe源码

git clone https://github.com/BVLC/caffe.git

进入caffe/python/安装需要的包

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

编译caffe源码

  1. 先对Makefile.config做备份:

    cp Makefile.config.example Makefile.config 
    
  2. 对Makefile.config做修改(重点:要修改的地方)

    # CPU-only switch (uncomment to build without GPU support).
    CPU_ONLY := 1
    
    # We need to be able to find Python.h and numpy/arrayobject.h.
    # PYTHON_INCLUDE := /usr/include/python2.7 \
    #	/usr/lib/python2.7/dist-packages/numpy/core/include
    # Anaconda Python distribution is quite popular. Include path:
    # Verify anaconda location, sometimes it's in root.
    ANACONDA_HOME := $(HOME)/anaconda3
    PYTHON_INCLUDE := $(ANACONDA_HOME)/include \
    	 	$(ANACONDA_HOME)/include/python3.5m \
    	 	$(ANACONDA_HOME)/lib/python3.5/site-packages/numpy/core/include
    **(!!!注意这里也先注释掉(即:ANACONDA_HOMEPYTHON_INCLUDE))**
    # Uncomment to use Python 3 (default is Python 2)
    PYTHON_LIBRARIES := boost_python3 python3.5m
    # PYTHON_INCLUDE := /usr/include/python3.5m \
    #                 /usr/lib/python3.5/dist-packages/numpy/core/include
    
    # We need to be able to find libpythonX.X.so or .dylib.
    # PYTHON_LIB := /usr/lib
    PYTHON_LIB := $(ANACONDA_HOME)/lib
    
    # Uncomment to support layers written in Python (will link against Python libs)
    WITH_PYTHON_LAYER := 1
    
    # Whatever else you find you need goes here.
    INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial
    LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu/hdf5/serial
    
  3. 编译(编译前先看下最后面的环境变量配置)
    make clean
    make all -j4
    make test -j4
    make runtest -j4
    !!!之后取消掉Makefile.config中ANACONDA_HOME,PYTHON_INCLUDE的注释
    make pycaffe -j4
    make pytest
    最后在python中import caffe若无出错并dir(caffe)后又许多包才算安装好了。
    caffe+anaconda3(python3.5 cpu版本)安装步骤
    注意:每次出错都要先make clean再重新编译。

部分错误集锦及解决(其他错误可自行百度解决)

错误:/usr/bin/ld:cannot find -lboost_python3
解决:cd /usr/lib/x86_64-linux-gnu/
     sudo ln -s libboost_python-py35.so libboost_python3.so 
    (做个软链接)
错误:-lpython3.5m无法找到的问题。
	 还记得上面说的**sudo apt-get install python-dev (!!!这个后面再说)**吗
     解决:sudo apt-get install python3.5-dev 
import caffe 出错: 
	1. ImportError: /home/kzl/anaconda2/bin/../lib/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by caffe/_caffe.so) 
	 解决:conda install libgcc  
	2. raise ValueError, "Can't create weekday with n == 0"
                ^
		SyntaxError: invalid syntax
	解决: pip install python-dateutil --upgrade

另附上~/.bashrc环境变量配置:

export PATH="/home/xxx/anaconda3/bin:$PATH"
export CPLUS_INCLUDE_PATH=/home/xxx/anaconda3/include/python3.5m
export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_INCLUDE_PATH
export LD_LIBRARY_PATH=/lib/x86_64-linux-gnu:$LD_INCLUDE_PATH
export PYTHONPATH=/home/xxx/caffe/python:$PYTHONPATH