最近有一个人脸识别的程序,使用到了python的dlib库,而且要在服务器上处理视频,安装的时候踩了挺多坑的,记录一下。
服务器的环境是Ubuntu Server 20.04,鹅厂云的学生机(因为太穷了)
1. 尝试使用pip安装 (失败)
首先尝试使用pip安装
python3 -m pip install dlib -i http://mirrors.tencentyun.com/pypi/simple
然后他装到一半ssh连接都断了,服务器还报警了,我去控制台查了一下,然后发现
好吧我懂了,这怕不是编译卡死了,于是我不死心又下载了源码安装。
2. 源码安装 (失败)
https://github.com/davisking/dlib.git
cd dlib
python setup.py install
然后,装着装着他就崩了
百度了一下
好吧,人麻了,合着就是内存不够呗。
3. 修改dlib源码,使用自带的dlib链接库编译 (成功)
然后我的某个巨佬同学提醒了我,Ubuntu是自带dlib的库的
人麻了,谢谢大佬提醒....
首先,查看一下Ubuntu带的dlib版本,发现是19.10的,先下载下来19.10的源码吧。
wget http://dlib.net/files/dlib-19.10.zip
然后解压之后,查看一下setup.py
发现C编译的路径是tools/python,然后去看一下那个cmakelists,发现了引用了工程
直接改成apt安装的
然后python setup.py,补上几个缺的依赖,最后安装成功了
4. 写在最后
如果不想看这个沙雕啰里啰唆的,直接复制后面的这几行就可以运行了吧...
sudo apt install -y cmake libdlib-dev libboost-python-dev libopenblas-dev liblapack-dev pybind11-dev libpng-dev libjpeg-dev libsqlite3-dev wget
wget http://dlib.net/files/dlib-19.10.zip
unzip dlib-19.10.zip
cd dlib-19.10
sed -i "s/add_subdirectory(..\/..\/dlib\/external\/pybind11 .\/pybind11_build)/find_package(pybind11 REQUIRED)/" ./tools/python/CMakeLists.txt
sed -i "s/add_subdirectory(..\/..\/dlib .\/dlib_build)/find_package(dlib REQUIRED)/" ./tools/python/CMakeLists.txt
python setup.py install