【避坑】Centos7 安装python3.6 dlib库
一、前情提要
本次安装过程是准备在docker中使用人脸检测等能力,需要使用到python的dlib包,一开始直接使用pip安装报错,在网上按照源码编译方法安装也报错,后面发现是centos的源库包(gcc、gcc-c++、cmake)版本太低了,手动升级gcc、g++版本后软连接没有全部处理好,也出现编译错误的情况。鉴于网络上基于centos7的解决方法比较分散,大部分都是基于ubuntu的 我找不到对应的包啊泪目 写下此文予以记录。
使用的环境:docker 镜像 nvidia/cuda:10.2-cudnn7-devel-centos7
二、升级gcc、g++并建立完整软连接
$ gcc -v
# 回显有gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) 说明系统已带有默认gcc
# 如果显示没有gcc,运行 yum install gcc gcc-c++ 安装gcc、g++
# 升级gcc版本,安装gcc-9,
# 也可以换成c++11等其他版本,把devtoolset-9-gcc* 换成devtoolset-11-gcc*以此类推
$ yum install centos-release-scl
$ yum install devtoolset-9-gcc*
# 找到gcc的安装位置(用g++找比较清晰)
$ find / -name g++
# 回显
/usr/bin/g++
/opt/rh/devtoolset-9/root/usr/bin/g++
# 备份旧的gcc版本,以及构建软链接
$ mv /usr/bin/gcc /usr/bin/gcc-4.8.5
$ mv /usr/bin/g++ /usr/bin/g++-4.8.5
# /opt...路径换成你回显的路径
$ ln -s /opt/rh/devtoolset-9/root/usr/bin/gcc /usr/bin/gcc
$ ln -s /opt/rh/devtoolset-9/root/usr/bin/g++ /usr/bin/g++
重要的一步,之前没设置这个cc,即使升级了gcc还是编译出错
# 先备份旧的cc、c++
$ mv /usr/bin/cc /usr/bin/cc-4.8.5
$ mv /usr/bin/c++ /usr/bin/c++-4.8.5
# 建立软链接
$ ln -s /usr/bin/gcc /usr/bin/cc
$ ln -s /usr/bin/g++ /usr/bin/c++
# 验证
$ gcc -v
# 回显中出现,则为成功
gcc version 9.3.1 20200408 (Red Hat 9.3.1-2) (GCC)
三、安装一些要用到的软件包
1.安装wget 用于下载cmake等源码包
$ yum install wget
2.安装openssl,编译cmake源码要用到
$ yum install openssl-devel
3.安装python3.6.8,centos7好像就只有这个
$ yum install python3-devel
三、下载、编译cmake
cmake版本要求要3.8以上才可以顺利编译
cmake官网下载链接
# 因为用的docker,直接在容器内用wget下载一个
$ wget https://cmake.org/files/v3.23/cmake-3.23.2.tar.gz
# 赋权、解压
$ chmod 755 cmake-3.23.2.tar.gz
$ tar -zxf cmake-3.23.2.tar.gz
# 编译源码
$ cd cmake-3.23.2
$ ./bootstrap
$ make && make install
# 检查是否安装成功
$ cmake --version
# 回显
cmake version 3.23.2
# 如果显示在/usr/bin没有该文件,手动添加
$ cp ./cmake-3.23.2/bin/cmake /usr/bin/
四、pip3 安装boost、dlib
现在就能愉快地用pip安装python3.6的包了
1.先安装boost
$ pip3 install boost
2.安装dlib,这个过程略久
$ pip3 install dlib
成功安装
五、参考资料
1.gcc 版本升级升级后默认-std=c++11
2.centos dlib库安装
3./usr/bin/cmake: No such file or directory错误