系统配置
ubuntu16.04
python v3.5.2
继上次在win10下安装了caffe后,因为没有服务器的原因又重新尝试在ubuntu下进行编译,结果发现caffe不只是在win10系统下不友好,在ubuntu环境下也不是非常有友好,在编译通过之后,含泪写下此文,引以为戒.
但是网上很多人说每个linux的环境都会不同,所以不一定有效…不一定..有效…hhh
因为第一次详细接触ubuntu,很多概念或描述并不是很准确,还望包涵指正
开始~
注意!!系统最好先不要安装anaconda!!
至于是不是因为这个原因我也不太清楚,但是确实很多资料显示在安装anaconda之后会出现各种麻烦的情况,在我第一天编译的时候也是因为安装了anaconda导致各种形形色色的bug。所以如果是新手还是选择先将anaconda卸载之后在进行下一步。
卸载完全完全不会影响之后的安装的!
首先打开anaconda的安装路径
比如我的就是cd /home/jiyali
执行指令
sudo rm -rf anaconda3
到根目录下,打开终端并输入
sudo gedit ~/.bashrc
拉倒最底下,将类似于如下代码全部删掉(网上很多教程是注释掉
\export PATH="/home/vision/Softwares/Anaconda3/bin:$PATH"
,但是打开命令行总会提醒行130:未预期的符号'fi'附近有语法错误
,鉴于强迫症就给全删掉了~)# added by Anaconda3 5.3.1 installer # >>> conda init >>> # !! Contents within this block are managed by 'conda init' !! __conda_setup="$(CONDA_REPORT_ERRORS=false '/home/vision/Softwares/Anaconda3/bin/conda' shell.bash hook 2> /dev/null)" if [ $? -eq 0 ]; then \eval "$__conda_setup" else if [ -f "/home/vision/Softwares/Anaconda3/etc/profile.d/conda.sh" ]; then . "/home/vision/Softwares/Anaconda3/etc/profile.d/conda.sh" CONDA_CHANGEPS1=false conda activate base else \export PATH="/home/vision/Softwares/Anaconda3/bin:$PATH" fi fi unset __conda_setup # <<< conda init <<<
删掉后保存并关闭文件
在终端运行
source ~/.bashrc
python 版本
首先确定系统中是否存在python3.5版本,在终端运行
cd /usr/bin
->ls
,去查看是否存在python3.5如果存在,尝试建立软连接操作如下
sudo rm python sudo ln -s python3 python
查看python版本是否发生改变,命令行输入
python
下载caffe
命令行执行如下命令
sudo apt-get install git
git clone http://github.com/BVLC/caffe.git
关于libboost1.55
caffe想用python3.5,有libboost>=1.5的要求,依次执行如下命令
sudo apt-get install libboost1.55-dev #一定要安装的
sudo apt-get install libboost1.55-all-dev #不一定要成功,但是一定要执行
各种python的依赖包
在网上大部分的教程中,这一不会提到执行for req in $(cat requirement.txt);do sudo pip3 install $req;done
命令,但是这是针对python2.7的,按照这些教程编译一定会出现各种问题,所以我们要用 pip3
来执行,步骤如下:
- 首先安装
pip3
,执行sudo apt-get install python3-pip
,安装成功后,再输入pip3 --version
确认安装成功 - 进入
caffe/python
(比如我的是在命令端输入cd /home/jiyali/caffe/python
) - 执行
for req in $(cat requirements.txt);do sudo pip3 install $req;done
- 安装结束后退到caffe根目录,查看是否安装成功,执行
sudo pip3 install -r python/requirements.txt
- ** 如果其中发生任何错误,自行百度解决,我在安装过程中就出现了错误,后来好像是版本问题,因为过程之中没来得及记录,所以在这不再提啦~但是必须保证所有的包安装成功 ***
numpy安装
执行 sudo apt-get install python-numpy
protobuf安装
首先查看当前版本,执行
protoc --version
,如果显示是3.x
版本应该是没问题,这里不建议版本太高如果不存在,执行以下指令
mkdir protobuf && cd protobuf mkdir cpp && cd cpp wget https://github.com/google/protobuf/releases/download/v3.0.0/protobuf-cpp-3.0.0.tar.gz tar xvf protobuf-cpp-3.0.0.tar.gz && cd protobuf-3.0.0 ./configure && make make check sudo make install sudo ldconfig cd ../.. mkdir python && cd python wget https://github.com/google/protobuf/releases/download/v3.0.0/protobuf-python-3.0.0.tar.gz tar xvf protobuf-python-3.0.0.tar.gz && cd protobuf-3.0.0/python/ python setup.py build python setup.py test python setup.py install
检查当前版本
protoc --version
->sudo protoc --version
,普通用户和root账户最好版本相同
修改 Makefile.config
首先复制一个副本,执行
cp Makefile.config.example Makefile.config
执行
sudo gedit Makefile.config
查找numpy的安装目录,执行
pip show numpy
将8行改为
CPU_ONLY := 1
查找系统中的
boost_python
,在命令行输入local boost python
将81.82行修改为
PYTHON_LIBRARIES := boost_python-py35 python3.5m PYTHON_INCLUDE := /usr/include/python3.5m \ /home/jiyali/.local/lib/python3.5/site-packages/numpy/core/include #前半部分是numpy的安装路径
*** 这些文件目录最好自己亲自检查是不是在这个文件夹下后再修改 ***
将94行改为
WITH_PYTHON_LAYER := 1
将97.98行改为
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial/ LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib/x86_64-linux-gnu/hdf5/serial
编译caffe
*** 如果是第一次编译caffe,没问题,按照下面步骤来就可以了 ***
依次输入以下指令
sudo make clean sudo make all sudo make test sudo make runtest sudo make pycaffe
上面都编译通过后,再执行
sudo make pytest
中间出现的问题,因为我修改了超多所以我把能记得的有效的办法贴一下~
pycaffe添加环境变量
- 运行
vim ~/.bashrc
- 将
export PYTHONPATH=/home/wanghh/caffe/python:$PYTHONPATH
加到文件中,保存退出 - 运行
source ~/.bashrc
,使修改生效
编译中出现的问题解决
- 之间大部分错误是因为我没有使用
sudo
,这个具体怎么个情况我也不太清楚 - 错误(make:Nothing to be done for ‘pycaffe’)
解决:执行sudo make clean
- 中间编译的过程中出现了很多错误,一般都是
No Module Named:xxx
,要么是模块没有安装,要么是安装了不支持Python3。
解决:缺啥安啥,执行sudo pip3 install XXX
- 错误: Makefile:554:recipe for target’.build_release/lib/libcaffe.so.1.0.0-rc3’failed
解决: 修改Makefile
文件 ,将181行改为LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial
- 错误:
Makefile:546:recipe for target 'pytest' failed
make:***[pytest] Error 1
解决:运行 sudo pip3 install matplotlib --upgrade
参考:
(ubuntu16.04)关于caffe+python3.5(非anaconda安装)编译的一些问题
官方github中的issues