title: Caffe Python3 Installation
body: <p>I am trying to install caffe cpu only on Ubuntu 16.04 LTS and python 3.5 (Ubuntu installed on virtual box) </p>
  
  <p>I edited Makefile.config as follow:</p>
  
  <pre><code>## Refer to http://caffe.berkeleyvision.org/installation.html
  # Contributions simplifying and improving our build system are welcome!
  
  # cuDNN acceleration switch (uncomment to build with cuDNN).
  # USE_CUDNN := 1
  
  # CPU-only switch (uncomment to build without GPU support).
  CPU_ONLY := 1
  
  # uncomment to disable IO dependencies and corresponding data layers
  # USE_OPENCV := 0
  # USE_LEVELDB := 0
  # USE_LMDB := 0
  
  # uncomment to allow MDB_NOLOCK when reading LMDB files (only if necessary)
  #   You should not set this flag if you will be reading LMDBs with any
  #   possibility of simultaneous read and write
  # ALLOW_LMDB_NOLOCK := 1
  
  # Uncomment if you're using OpenCV 3
  OPENCV_VERSION := 3
  
  # To customize your choice of compiler, uncomment and set the following.
  # N.B. the default for Linux is g++ and the default for OSX is clang++
  # CUSTOM_CXX := g++
  
  # CUDA directory contains bin/ and lib/ directories that we need.
  CUDA_DIR := /usr/local/cuda
  # On Ubuntu 14.04, if cuda tools are installed via
  # "sudo apt-get install nvidia-cuda-toolkit" then use this instead:
  # CUDA_DIR := /usr
  
  # CUDA architecture setting: going with all of them.
  # For CUDA &lt; 6.0, comment the *_50 through *_61 lines for compatibility.
  # For CUDA &lt; 8.0, comment the *_60 and *_61 lines for compatibility.
  # For CUDA &gt;= 9.0, comment the *_20 and *_21 lines for compatibility.
  CUDA_ARCH := -gencode arch=compute_20,code=sm_20 \
          -gencode arch=compute_20,code=sm_21 \
          -gencode arch=compute_30,code=sm_30 \
          -gencode arch=compute_35,code=sm_35 \
          -gencode arch=compute_50,code=sm_50 \
          -gencode arch=compute_52,code=sm_52 \
          -gencode arch=compute_60,code=sm_60 \
          -gencode arch=compute_61,code=sm_61 \
          -gencode arch=compute_61,code=compute_61
  
  # BLAS choice:
  # atlas for ATLAS (default)
  # mkl for MKL
  # open for OpenBlas
  BLAS := atlas
  # Custom (MKL/ATLAS/OpenBLAS) include and lib directories.
  # Leave commented to accept the defaults for your choice of BLAS
  # (which should work)!
  # BLAS_INCLUDE := /path/to/your/blas
  # BLAS_LIB := /path/to/your/blas
  
  # Homebrew puts openblas in a directory that is not on the standard search path
  # BLAS_INCLUDE := $(shell brew --prefix openblas)/include
  # BLAS_LIB := $(shell brew --prefix openblas)/lib
  
  # This is required only if you will compile the matlab interface.
  # MATLAB directory should contain the mex binary in /bin.
  # MATLAB_DIR := /usr/local
  # MATLAB_DIR := /Applications/MATLAB_R2012b.app
  
  # NOTE: this is required only if you will compile the python interface.
  # 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)/anaconda
  # 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_python-py35 python3.5m
  PYTHON_INCLUDE := /usr/include/python3.5m \
                   /usr/local/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
  
  # Homebrew installs numpy in a non standard path (keg only)
  # PYTHON_INCLUDE += $(dir $(shell python -c 'import numpy.core; print(numpy.core.__file__)'))/include
  # PYTHON_LIB += $(shell brew --prefix numpy)/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
  
  # If Homebrew is installed at a non standard location (for example your home directory) and you use it for general dependencies
  # INCLUDE_DIRS += $(shell brew --prefix)/include
  # LIBRARY_DIRS += $(shell brew --prefix)/lib
  
  # NCCL acceleration switch (uncomment to build with NCCL)
  # https://github.com/NVIDIA/nccl (last tested version: v1.2.3-1+cuda8.0)
  # USE_NCCL := 1
  
  # Uncomment to use `pkg-config` to specify OpenCV library paths.
  # (Usually not necessary -- OpenCV libraries are normally installed in one of the above $LIBRARY_DIRS.)
  USE_PKG_CONFIG := 1
  
  # N.B. both build and distribute dirs are cleared on `make clean`
  BUILD_DIR := build
  DISTRIBUTE_DIR := distribute
  
  # Uncomment for debugging. Does not work on OSX due to https://github.com/BVLC/caffe/issues/171
  # DEBUG := 1
  
  # The ID of the GPU that 'make runtest' will use to run unit tests.
  TEST_GPUID := 0
  
  # enable pretty build (comment to see full commands)
  Q ?= @
  </code></pre>
  
  <p>Then I build all and i build pycaffe and the test (make runtest) was done succefully:</p>
  
  <pre><code>make all
  make test
  make runtest
  sudo cp build/lib/libcaffe.so* /usr/lib
  make pycaffe
  sudo cp -r python/caffe/ /usr/local/lib/python3.5/dist-packages/
  </code></pre>
  
  <p>when I try :</p>
  
  <pre><code>python3 -c "import caffe"
  </code></pre>
  
  <p>I got the following error:</p>
  
  <pre><code>    Traceback (most recent call last):
    File "&lt;stdin&gt;", line 1, in &lt;module&gt;
    File "/usr/local/lib/python3.5/dist-packages/caffe/__init__.py", line 1, in &lt;module&gt;
      from .pycaffe import Net, SGDSolver, NesterovSolver, AdaGradSolver, RMSPropSolver, AdaDeltaSolver, AdamSolver, NCCL, Timer
    File "/usr/local/lib/python3.5/dist-packages/caffe/pycaffe.py", line 15, in &lt;module&gt;
      import caffe.io
    File "/usr/local/lib/python3.5/dist-packages/caffe/io.py", line 2, in &lt;module&gt;
      import skimage.io
    File "/usr/local/lib/python3.5/dist-packages/skimage/io/__init__.py", line 15, in &lt;module&gt;
      reset_plugins()
    File "/usr/local/lib/python3.5/dist-packages/skimage/io/manage_plugins.py", line 93, in reset_plugins
      _load_preferred_plugins()
    File "/usr/local/lib/python3.5/dist-packages/skimage/io/manage_plugins.py", line 73, in _load_preferred_plugins
      _set_plugin(p_type, preferred_plugins['all'])
    File "/usr/local/lib/python3.5/dist-packages/skimage/io/manage_plugins.py", line 85, in _set_plugin
      use_plugin(plugin, kind=plugin_type)
    File "/usr/local/lib/python3.5/dist-packages/skimage/io/manage_plugins.py", line 255, in use_plugin
      _load(name)
    File "/usr/local/lib/python3.5/dist-packages/skimage/io/manage_plugins.py", line 299, in _load
      fromlist=[modname])
    File "/usr/local/lib/python3.5/dist-packages/skimage/io/_plugins/matplotlib_plugin.py", line 3, in &lt;module&gt;
      import matplotlib.pyplot as plt
    File "/usr/local/lib/python3.5/dist-packages/matplotlib/pyplot.py", line 37, in &lt;module&gt;
      from matplotlib.figure import Figure, figaspect
    File "/usr/local/lib/python3.5/dist-packages/matplotlib/figure.py", line 39, in &lt;module&gt;
      from matplotlib.axes import Axes, SubplotBase, subplot_class_factory
    File "/usr/local/lib/python3.5/dist-packages/matplotlib/axes/__init__.py", line 4, in &lt;module&gt;
      from ._subplots import *
    File "/usr/local/lib/python3.5/dist-packages/matplotlib/axes/_subplots.py", line 10, in &lt;module&gt;
      from matplotlib.axes._axes import Axes
    File "/usr/local/lib/python3.5/dist-packages/matplotlib/axes/_axes.py", line 24, in &lt;module&gt;
      import matplotlib.dates as _  # &lt;-registers a date unit converter
    File "/usr/local/lib/python3.5/dist-packages/matplotlib/dates.py", line 125, in &lt;module&gt;
      from dateutil.rrule import (rrule, MO, TU, WE, TH, FR, SA, SU, YEARLY,
    File "/usr/local/lib/python3.5/dist-packages/dateutil/rrule.py", line 55
      raise ValueError, "Can't create weekday with n == 0"
                      ^
  SyntaxError: invalid syntax
  </code></pre>
  
  <blockquote>
    <p>Reference:
    <a href="https://github.com/dungba88/caffe-python3-install/blob/master/install-caffe.md" rel="nofollow noreferrer">https://github.com/dungba88/caffe-python3-install/blob/master/install-caffe.md</a></p>
  </blockquote>