在Ubuntu上用python3安装caffe(仅CPU)

现在网上安装caffe的版本基本上都是基于python 2.7的,本教程旨在用anaconda 3安装caffe cpu,其过程非常艰辛,连续弄了三天时间才终于有了一个完整教程。

我的系统环境:Ubuntu 16.04、Anaconda 3.5.2(也就是python 3.5.2)、低端笔记本、安装caffe cpu、在这之前安装了opencv 3.2.0

第一部分: 安装dependencies
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
sudo apt-get install --no-install-recommends libboost-all-dev
sudo apt-get install libatlas-base-dev
sudo apt-get install libhdf5-serial-dev

sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev

然后把CAFFE的源代码下载下来: git clone https://github.com/BVLC/caffe.git
(当然没有安装GIT的得先安装一下)
下载完成之后,进入CAFFE文件夹, 进入里面的PYTHON文件夹,然后输入
for req in $(cat requirements.txt); do pip install $req; done
(PIP如果没有安装得先安装一下:sudo apt install python-pip)
第二部分: 安装CAFFE
到CAFFE文件夹, 使用模板写个Makefile.config. 具体就是先复制一下模板, 再改一些内容(我喜欢用EMACS).
cp Makefile.config.example Makefile.config
-因为CPU MODE, 所以在CPU_ONLY := 1前面的#要去掉.
-两个路径要改成这样:(添加后面的两个hdf5的路径, 否则编译时报hdf5错误)
# 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
准备好了.
make pycaffe -j 4
另外, 这个make默认是用CPU单核运算,如果想要快一点, 比如我想使用四核, 在make后面加上-j4标签.
如果上面4行某一行报错之后想要重试,建议先make clean再重新开始.
第三部分: 设置 Python Caffe
去到CAFFE文件夹里面的python文件夹, 把当前路径记录下来(pwd). 然后输入以下命令(把记下的路径放在相应地方)
export PYTHONPATH=/path/to/caffe/python:$PYTHONPATH

第四部分:也是最重要的部分——分享我解决错误的过程及解决方案

1、错误:按照上面的教程一点没变,老是说找不到Python.h

解决办法:网上查了各个版本的说法都没解决,后面仔细想了想,肯定是系统找不到自己的Python路径,我发现Python.h在我的anaconda文件中,但在配置文件Makefile.config中的anaconda环境的路径根本就不是"ANACONDA_HOME := $(HOME)/anaconda",所以系统根本找不到Python.h。所以我立即把ANACONDA_HOME改了,改成了我装anaconda时文件的位置,修改后的截图如下:

# Anaconda Python distribution is quite popular. Include path:
# Verify anaconda location, sometimes it's in root.
# ANACONDA_HOME := $(HOME)/anaconda
ANACONDA_HOME := $(HOME)/Downloads/yes

# PYTHON_INCLUDE := $(ANACONDA_HOME)/include \
        # $(ANACONDA_HOME)/include/python2.7 \
        # $(ANACONDA_HOME)/lib/python2.7/site-packages/numpy/core/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

PYTHON_INCLUDE := $(ANACONDA_HOME)/include \
        $(ANACONDA_HOME)/include/python3.5m \
        $(ANACONDA_HOME)/lib/python3.5/site-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

2、错误:make pycaffe可以通过,但是make all时出现错误,具体错误我没有记录,但是好像是因为系统装了多个opencv的原因,不管怎么说,至少可以在python环境下import caffe了,不过import使又出现错误了:

Python 3.5.2 |Continuum Analytics, Inc.| (default, Jul  2 2016, 17:53:06)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import caffe
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/.../Downloads/caffe-master/python/caffe/__init__.py", line 1, in <module>
    from .pycaffe import Net, SGDSolver, NesterovSolver, AdaGradSolver, RMSPropSolver, AdaDeltaSolver, AdamSolver, NCCL, Timer
  File "/home/.../Downloads/caffe-master/python/caffe/pycaffe.py", line 13, in <module>
    from ._caffe import Net, SGDSolver, NesterovSolver, AdaGradSolver, \
ImportError: /home/.../Downloads/caffe-master/python/caffe/../../build/lib/libcaffe.so.1.0.0-rc5: undefined symbol: _ZN2cv6imreadERKNS_6StringEi

make all时出现的错误:

.build_release/lib/libcaffe.so: undefined reference to `cv::imread(cv::String const&, int)'
.build_release/lib/libcaffe.so: undefined reference to `cv::imencode(cv::String const&, cv::_InputArray const&, std::vector<unsigned char, std::allocator<unsigned char> >&, std::vector<int, std::allocator<int> > const&)'
.build_release/lib/libcaffe.so: undefined reference to `cv::imdecode(cv::_InputArray const&, int)'
collect2: error: ld returned 1 exit status
Makefile:625: recipe for target '.build_release/tools/upgrade_net_proto_text.bin' failed
make: *** [.build_release/tools/upgrade_net_proto_text.bin] Error 1
make: *** Waiting for unfinished jobs....

解决办法:也是,的确在这之前我分别在python 3.5和python 2.7下面装了opencv,而且该教程前面又装了libopencv-dev,所以我就怀疑是这个,但是我尝试着卸载了opencv还是import出现同样的错误,最后不断找解决方案,也尝试了他们的各种解决方法,都不知道make clean然后又make all了多少次,还是不管用。最后在网站https://github.com/BVLC/caffe/issues/2348#issuecomment-95156848看到有人说”Uncomment if you're using OpenCV 3”我顿时又想到了配置文件,于是我在配置文件中去掉 ”OPENCV_ VERSION := 3“,我又make clean,接着make all,奇迹终于出现了,上面的错误消失了,居然make all成功了,哈哈,太高兴了!!!


上面的两个问题花的时间最长,用了两天多的时间,下面的问题网上的解决办法都是正确的,花的时间少。


3、错误:现在可以import caffe了,但是又出现了以下错误:

Python 3.5.2 |Continuum Analytics, Inc.| (default, Jul  2 2016, 17:53:06)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import caffe
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/.../Downloads/caffe-master/python/caffe/__init__.py", line 1, in <module>
    from .pycaffe import Net, SGDSolver, NesterovSolver, AdaGradSolver, RMSPropSolver, AdaDeltaSolver, AdamSolver, NCCL, Timer
  File "/home/.../Downloads/caffe-master/python/caffe/pycaffe.py", line 15, in <module>
    import caffe.io
  File "/home/..../Downloads/caffe-master/python/caffe/io.py", line 2, in <module>
    import skimage.io
  File "/home/.../Downloads/yes/lib/python3.5/site-packages/skimage/io/__init__.py", line 15, in <module>
    reset_plugins()
  File "/home/.../Downloads/yes/lib/python3.5/site-packages/skimage/io/manage_plugins.py", line 93, in reset_plugins
    _load_preferred_plugins()
  File "/home/.../Downloads/yes/lib/python3.5/site-packages/skimage/io/manage_plugins.py", line 73, in _load_preferred_plugins
    _set_plugin(p_type, preferred_plugins['all'])
  File "/home/.../Downloads/yes/lib/python3.5/site-packages/skimage/io/manage_plugins.py", line 85, in _set_plugin
    use_plugin(plugin, kind=plugin_type)
  File "/home/.../Downloads/yes/lib/python3.5/site-packages/skimage/io/manage_plugins.py", line 255, in use_plugin
    _load(name)
  File "/home/.../Downloads/yes/lib/python3.5/site-packages/skimage/io/manage_plugins.py", line 299, in _load
    fromlist=[modname])
  File "/home/.../Downloads/yes/lib/python3.5/site-packages/skimage/io/_plugins/matplotlib_plugin.py", line 3, in <module>
    import matplotlib.pyplot as plt
  File "/home/.../Downloads/yes/lib/python3.5/site-packages/matplotlib/pyplot.py", line 36, in <module>
    from matplotlib.figure import Figure, figaspect
  File "/home/.../Downloads/yes/lib/python3.5/site-packages/matplotlib/figure.py", line 40, in <module>
    from matplotlib.axes import Axes, SubplotBase, subplot_class_factory
  File "/home/..../Downloads/yes/lib/python3.5/site-packages/matplotlib/axes/__init__.py", line 4, in <module>
    from ._subplots import *
  File "/home/.../Downloads/yes/lib/python3.5/site-packages/matplotlib/axes/_subplots.py", line 10, in <module>
    from matplotlib.axes._axes import Axes
  File "/home/.../Downloads/yes/lib/python3.5/site-packages/matplotlib/axes/_axes.py", line 23, in <module>
    import matplotlib.dates as _  # <-registers a date unit converter
  File "/home/.../Downloads/yes/lib/python3.5/site-packages/matplotlib/dates.py", line 126, in <module>
    from dateutil.rrule import (rrule, MO, TU, WE, TH, FR, SA, SU, YEARLY, MONTHLY, WEEKLY, DAILY, HOURLY, MINUTELY, SECONDLY)
  File "/home/.../Downloads/yes/lib/python3.5/site-packages/dateutil/rrule.py", line 55
    raise ValueError, "Can't create weekday with n == 0"
                    ^
SyntaxError: invalid syntax

错误解决办法:从上面可以看出也就是在  import matplotlib.pyplot as plt 时出现错误,百度了以下,尝试了几种解决方案,原来是matplotlib版本太低了,需要升级,于是我pip install matplotlib --upgrade 了以下,果然解决了,但是又出现了下面的问题。

3、错误:Intel MKL FATAL ERROR: Cannot load libmkl_avx.so or libmkl_def.so.

Python 3.5.2 |Continuum Analytics, Inc.| (default, Jul  2 2016, 17:53:06)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import caffe
Intel MKL FATAL ERROR: Cannot load libmkl_avx.so or libmkl_def.so.

解决方案:继续百度了下,哈哈,原来是因为numpy版本过低导致,于是我 conda update numpy ,哈哈又成功了。。所以,我的anaconda里边的包必须得升级啊,里边的包都还是安装anaconda时系统自带的,太老了。

哈哈,我现在可以大声的说我终于可以在Ubuntu下成功使用caffe了,截图为证!!!!!

参考网站:

http://www.voidcn.com/blog/u012675539/article/p-5962112.html

http://www.linuxidc.com/Linux/2016-09/135034.htm

http://caffe.berkeleyvision.org/installation.html#compilation

https://github.com/BVLC/caffe/issues/2348#issuecomment-95156848

http://stackoverflow.com/questions/36659453/intel-mkl-fatal-error-cannot-load-libmkl-avx2-so-or-libmkl-def-so

http://blog.csdn.net/10km/article/details/65936155?locationNum=14&fps=1

在Ubuntu上用python3安装caffe(仅CPU)相关推荐

  1. 树莓派运行python import os未找到命令_通过pip指令在树莓派上基于Python3安装OpenCV...

    前言 Python是现如今在人工智能领域较为热门的编程语言,因其简洁的语言风格.丰富的类库支持以及具有活跃的交流社区,受到广大开发者的喜爱.起初,python是一门辅助科学研究的一门语言,但因其在当今 ...

  2. Ubuntu 16.04下安装Caffe(GPU版本 GTX970)

    Ubuntu 16.04下安装Caffe(GPU版本 GTX970) 个人分类: Deep Learning 2018年8月6日更新说明:距上次安装成功没多久,显卡驱动莫名失效,没有解决,索性重装了系 ...

  3. 在Ubuntu上源码安装MySQL+安装问题解决+安全优化

    当然,MySQL的安装方法多种多样,在Ubuntu上,你可以采用apt-get的方式安装,这样的好处是:快速方便.基本上,它会帮你解决所有的函数库依赖问题,正常情况下,只要apt-get执行完成,那么 ...

  4. Ubuntu上nfs的安装配置

    Ubuntu上nfs的安装配置 2007-07-01 09:04 Ubuntu 默认是没有nfs服务的,所以需要自己安装 1.安装nfs服务版            apt-get install n ...

  5. Windows学习总结(23)——在 Windows 10 子系统 ubuntu 上利用 WSL2 安装 docker 的 2 种方式

    前言 windows10 目前推出了WSL2,相对于WSL采用API转换的方式, WSL2 则完全不同,win10 开始内置了一个轻量级虚拟机,经过不断的优化,这个虚拟机实现了与 windows 的高 ...

  6. PyTorch——Ubuntu上Pytorch的安装教程

    1 致谢 感谢网友夜幕下的光123提供的帮助, 原文链接如下: https://blog.csdn.net/songchunxiao1991/article/details/95192063 2 前言 ...

  7. Ubuntu上mysql的安装及使用【转】

    原创 Ubuntu上mysql的安装及使用 2019-02-10 13:54:24 baiduoWang 阅读数 196更多 分类专栏: Linux MySql 版权声明:本文为博主原创文章,遵循 C ...

  8. 安装caffe(CPU版本)的一些参考和问题的解决

    安装caffe(CPU版本)的一些参考和问题的解决 参考文章: (1)安装caffe(CPU版本)的一些参考和问题的解决 (2)https://www.cnblogs.com/chengjue924/ ...

  9. linux wireshark使用教程,技术|Ubuntu 上 Wireshark 的安装与使用

    在本教程中,你将学习如何在 Ubuntu 和其它基于 Ubuntu 的发行版上安装最新的 Wireshark.同时你也将学习如何在没有 sudo 的情况下来运行 Wireshark,以及如何设置它来进 ...

最新文章

  1. 01.The Introduction of Linux
  2. python关键字as_python 之 import、from、as 关键字的 白话 解释与例子
  3. Linux多线程编程(一)---多线程基本编程
  4. 2020年工作总结大会感悟
  5. 都说Python库千千万,这几个你认识不?
  6. 190312每日一句
  7. 51单片机前言知识总结
  8. 斗破特别篇美杜莎建模赏析文
  9. 拼多多“真香”补贴之变
  10. 学习Linux/Unix这么久了,你真的知道什么是终端吗?
  11. latext配置 vscode_VSCode配置LaTeX编辑器
  12. pbl和sbl_ROKSO、SBL、XBL、PBL、DBL 是什么意思?
  13. 网络游戏外挂编写原理
  14. maya如何查看资源大纲_maya大纲视图(Outliner),MAYA
  15. 7. MyBatis多表查询 - 一对一 - 一对多 - 多对多
  16. 重拾C#日常积累:DateTime日期的格式化和空值设置
  17. paddlepaddle 7 面向语义分割的迁移学习
  18. python小乌龟代码_悄悄告诉你,Python 里面有一只小乌龟
  19. Word插入表格相邻单元格边框断开方法
  20. 能做到云中分钟级数据恢复 爱数灾备云据说能引领行业10年

热门文章

  1. java制表位_java制表位如何应用?大神进来。
  2. java框架技术试卷_Java试题系列之技术框架部分
  3. 在html中 position默认值,CSS 中的 position 属性
  4. TCP音频流媒体和播放器(IP语音聊天)
  5. 手把手带你使用Vue实现一个图片水平瀑布流插件
  6. 【转载】计然书-范蠡
  7. 基于Fujitsu FM3 32-bit ARM Cortex-M3 内核的MCU 开发(第二篇)
  8. 重学 Java 设计模式:实战装饰器模式(SSO单点登录功能扩展,增加拦截用户访问方法范围场景)
  9. 【opengl32.dll下载】找不到opengl32.dll怎么修复
  10. drop_duplicates去重详解