1 说明
pycaffe 是 caffe 提供的 python 接口,之需要在 caffe 的 Makefile.config 中打开对应项即可编译出来,以下内容是作者在安装遇到问题后所整理的。
环境 | 版本 |
---|---|
os | ubuntu20.10 |
Anconda | Anaconda3-2020.11-Linux-x86_64 |
python | 3.8 |
gcc | 7.5.0 |
2 安装 libboost_python3.so
2.1 方式一:源码安装
去官网下载源码,本实验下载的 boost_1_75_0
版本,版本低了可能对 python3 支持不好:
./bootstrap.sh --with-python=/home/tamray/anaconda3/bin/python
./b2 cflags='-fPIC' cxxflags='-fPIC' --with-python include="/home/tamray/anaconda3//home/tamray/anaconda3/include/python3.7m"
# 如果安装时出现 “”atal error: pyconfig.h: 没有那个文件或目录” 就添加:
export CPLUS_INCLUDE_PATH=/home/tamray/anaconda3/include/python3.7m
/b2 cflags='-fPIC' cxxflags='-fPIC' --with-python include="/home/tamray/anaconda3//home/tamray/anaconda3/include/python3.7m"
sudo ./b2 install
# 创建软链接
cd /usr/local/lib/
sudo ln -s libboost_python37.so libboost_python3.so
sudo ln -s libboost_python37.a libboost_python3.a
sudo ldconfig
# 查看库是否找到
ldconfig -p |grep boost_python
2.2 方式二:apt安装
首先查看一些系统有没有 libboost_python3.so 这个库:
ldconfig -p | grep boost_python3
如果有,可能会输出如下:
libboost_python38.so.1.71.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_python38.so.1.71.0
libboost_python38.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libboost_python38.so
信息表明 libboost_python3.so 所对应的是 python3.8 版本,所以我们准备编译的 caffe 接口也是 python3.8 版本。如果系统没有这个库,就需要安装了:
sudo apt install libboost-all-dev
安装后,对应的库应该存放在 /usr/lib/x86_64-linux-gnu/libboost_python38.so
,需要给它创建软链接:
cd /usr/lib/x86_64-linux-gnu
sudo ln -s libboost_python38.so libboost_python38.so
3 安装 Anconda
由于上步对应的是 python3.8,所以可以安装 Anaconda3-2020.11-Linux-x86_64
,安装后自带 python3.8。
-
安装
./Anaconda3-2020.11-Linux-x86_64.sh
注意安装时不要选择初始化,最好自己添加环境变量。
-
在
.bashrc
中添加export PATH=/home/tamray/anaconda3/bin:$PATH
执行
source ~/.bashrc
刷新环境变量 -
激活虚拟环境
source activate
3 修改 caffe 的 Makfefile.config
修改其中的 python 环境的路径,这里指定为 aconda 的 python3.8 目录:
ANACONDA_HOME := $(HOME)/anaconda3
PYTHON_INCLUDE := $(ANACONDA_HOME)/include \
$(ANACONDA_HOME)/include/python3.8 \
$(ANACONDA_HOME)/lib/python3.8/site-packages/numpy/core/include
PYTHON_LIBRARIES := boost_python3 python3.8
PYTHON_LIB := $(ANACONDA_HOME)/lib
WITH_PYTHON_LAYER := 1
:::danger 说明
上面的配置只是针对 python 接口,其他配置参考Caffe的安装。
:::
-
编译 caffe:
make all -j8 make test -j8 #make runtest
-
编译 pycaffe:
make pycaffe
如果出现了问题:
ModuleNotFoundError: No module named 'google'
,就安装:pip install protobuf
4 添加 pycaffe 环境变量
在 .bashrc 中添加下面内容并刷新:
export PYTHONPATH=~/trcaffe/caffe/python
测试:
tamray@tamray-System-Product-Name:~$ python
Python 3.8.5 (default, Sep 4 2020, 07:30:14)
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import caffe
>>>