linux下安装python dlib依赖
dlib是主要用于机器学习的库,封装了机器学习算法,可以非常方便的实现比如人脸识别,车辆识别,物体检测以其他很多功能,dlib默认使用C++进行开发,另外图像识别有一部分支持python接口开发,上手非常快,因为对于系统的安装过程,都来自官方文档的拼凑,网上资料很少,对新手会有一些坑,所以这里主要说一下python依赖接口的安装,服务器环境centos7.3,python版本2.7,下面是所有的依赖以及安装顺序:
1. pip python模块,下载地址:https://pypi.python.org/pypi/pip
2. cmake编译工具 之前文章有详细的安装过程
3. Boost.Python boost是一款非常流行的C++类库,封装了非常多好用的工具,Boost.Python其中一个组件,主要封装了python和C/C++之间通信的API,比默认的python api更完善,dlib基于这个依赖进行交互,所以这里需要编译boost.python依赖
4. dlib python模块,前面环境都准备完毕,最后一步就是编译并安装dlib python扩展了
dlib python模块执行安装时,过程是会基于cmake编译工具和Boost.Python工具对dlib源码进行编译,最后将二进制模块编译至python库目录下,然后python就可以调用了,那下面开始安装
1. pip模块
pip模块从上面网址下载下来,解压开,直接执行python setup.py install即可,和普通模块安装一样,没什么说的
2. cmake编译工具
参考之前的文章 http://www.cnblogs.com/freeweb/p/5788729.html 安装即可;如果没有cmake工具,在安装dlib时也会给出提示
3. Boost.Python
如果没有boost python依赖,那么下一步编译dlib时,会给出明确的提示和操作步骤,如下:

步骤其实都给出来了,按上面的步骤安装即可,下面是具体过程:
3.1. 下载boost库
boost官网:http://www.boost.org/,点击右侧的最新版下载即可:

我这里下载的是:boost_1_65_1.tar.bz2 大小80M左右
3.2. 安装boost库
下载之后开始安装,首先解压安装包:
tar -jxvf boost_1_65_1.tar.bz2
cd boost_1_65_1/
然后按照上面图片的步骤和官网文档的步骤安装:
./bootstrap.sh --prefix=/monchickey/boost --with-libraries=python
./b2
./b2 install
上面的参数解释:
1. --prefix是指定安装的位置,如果不加默认是安装在/usr/local和系统库混合,这样后面比较省事,但是手动指定目录便于对库进行管理,不过后期要配置一些东西,下面会说到.
2. python支持编译:--with-libraries=python 这里意思是仅安装python的库,其余的都不安装,对于dlib来说就是够用即可,但是如果需要编译全部库--with-libraries参数需要留空,也就是不加,文档中具体有写到,此时编译python要使用--with-python参数来专门指定,python2只使用参数:--with-python=python即可,其余的都默认,python3要使用--with-python=PYTHON3_HOME以及其他参数都指定详细,另外有篇文章是专门编译python3的,可以参考;
根据上面说的,如果需要编译boost全部依赖以及python 2.x的话,则使用下面的命令:
./bootstrap.sh --prefix=/monchickey/boost --with-python=python
./b2 && ./b2 install
上面编译和安装过程需要等待挺长时间,完了之后进入安装目录,会看到只有两个目录,一个是include主要是存放头文件和源代码文件,另一个是lib,也就是我们编译好的python相关依赖,如下(备注: 这里因为仅编译python库, 所以比较少):

到这里boost.python依赖就算安装完成了
4. 最后编译dlib python模块
dlib库官网地址:http://dlib.net/ml.html 进入后点击左下侧按钮直接下载即可:

这里下载的是:dlib-19.7.tar.bz2,首先在指定位置解压:
tar -jxvf dlib-19.7.tar.bz2
cd dlib-19.7/
进入目录后会看到setup.py,如果上面boost.python安装到系统目录下的话,那么现在直接安装应该就可以了,如果是自定义目录,这时候安装仍然会报错提示找不到boost python库,其实是cmake找不到boost,这时候先不要急着配置系统库建软链,而是要配置环境变量,目的是让cmake找到boost即可,首先执行 vim /etc/profile 然后在最后一行加上: export BOOST_ROOT=/monchickey/boost 指定boost根目录,如下:

配置好之后,执行 source /etc/profile 使环境变量生效,接下来就可以执行安装了:
python setup.py install --yes USE_AVX_INSTRUCTIONS
这里后面加这个参数是为了支持CPU AVX指令集,这样可以提升程序运行的性能,目前一般CPU都支持;等一会就安装完成了,安装完成之后运行 python 进入交互式界面,输入 import dlib 如果正常就成功了,不过如果boost库安装的不是默认目录,仍然会出问题即libboost_python.so找不到的错误,原因是导入编译好的dlib模块时,同时dlib运行时又会加载boost.python库,这时候系统搜索不到所以会报错,这和刚才cmake报错是不同的,这个时候不要将刚才的boost库文件放到python库下面,只有编译成可以被python直接调用的库才放在python目录下面,而基于C的python库,运行时依赖的是系统库搜索路径,应该是/usr/lib,/usr/lib64这些,所以这时候解决方法有以下两种:
1). 将/monchickey/boost/lib中的so模块建立软链接到/usr/lib64下面
2). 利用配置文件/etc/ld.so.conf加载新的库搜索路径
这里使用第二种方法,首先执行 vim /etc/ld.so.conf.d/boost.conf 新建配置文件,然后加入一行:/monchickey/boost/lib 保存并退出,
然后执行命令: ldconfig 使配置生效,这样指定的链接库就被加到运行时搜索目录了
现在再次导入dlib模块就正常了
linux下安装python dlib依赖的更多相关文章
- Linux 下安装Python报错:zlib not available
问题描述: 在Linux下安装Python时出现一个错误:zipimport.ZipImportError: can't decompress data; zlib not available 详细错 ...
- linux下安装python
在Linux下安装Python的操作相当简单,按如下步骤操作即可: 命令: wget https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tgzt ...
- Linux 下安装python软件包(pip、nose、virtualenv、distribute )
新手刚开始学习Python,目前学习<笨方法学python>ing- 在学习习题46时需要安装几个软件包:pip.nose.virtualenv.distribute !在此记录Linux ...
- linux下安装python linux下一些常用的命令
注意 ubuntukylin-14.04.2-desktop-amd64 自带python2.7.6 这个说的比较详细 http://wenku.baidu.com/link?url=gaeFcQrc ...
- python 基础1.1--windows/linux 下安装python
一.windows下安装python 1>windows上python后缀是.msi的,下载下来后,直接双击运行.会在c盘生成python.exe的文件,把python.exe的文件加入到win ...
- Linux下安装python,mysql,redis
linux 安装Python3 1.python下载 请在终端输入如下命令: cd /home wget http://cdn.npm.taobao.org/dist/python/3.6.5/Pyt ...
- windows下安装python和依赖包的利器——Anaconda
在windows下安装python和很多依赖包,安装起来略为痛苦,可以使用python的大整合包——Anaconda Anaconda下载地址: http://continuum.io/downloa ...
- linux下安装python环境
1.linux下安装python3 a. 准备编译环境(环境如果不对的话,可能遇到各种问题,比如wget无法下载https链接的文件) yum groupinstall 'Development To ...
- 环境部署(九):linux下安装python+chrome+Xvfb
在基于selenium进行的UI自动化测试中,开发调试环境一般都是windows操作系统.完成后需要部署到专门的测试环境. 如要要部署到linux环境的服务器(阿里云.腾讯云)执行,那么测试脚本也需要 ...
随机推荐
- Optimization algorithm----Deep Learning
深度学习中的优化算法总结 以下内容简单的汇总了在深度学习中常见的优化算法,每个算法都集中回答:是什么?(原理思想)有什么用?(优缺点)怎么用?(在tensorflow中的使用) 目录 1.SGD 1. ...
- hdu1506单调栈的宽度
很好的题目,单调栈上的宽度如何求 题解:https://blog.csdn.net/baidu_35643793/article/details/64440095 单调队列和单调栈都是去除没有用的数据 ...
- git填坑笔记
Counting objects: 3, done.Writing objects: 100% (3/3), 203 bytes | 0 bytes/s, done.Total 3 (delta 0) ...
- python 全栈开发,Day30(第一次面向对象考试)
月考题: python 全栈11期月考题 一 基础知识:(70分) 1.文件操作有哪些模式?请简述各模式的作用(2分) 2.详细说明tuple.list.dict的用法,以及它们的特点(3分) 3.解 ...
- 步步为营-11-List<T>泛型的简单练习
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- 遍历集合的Iterator删除其中的元素
package list; import java.util.LinkedList; /* * 遍历集合的时候删除其中的元素 从后往前删,每次都删除的是最后一个元素,不涉及移位 */public cl ...
- 小米note开启调试模式
1.刷机为开发版本. 2.拨电话界面输入 *#*#717717#*#* 开启调试模式. 3.驱动好像会自己安装.
- python学习之集合
集合(set)是一个无序的不重复元素序列. 可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典. 创建格 ...
- maven在windows下的安装
1.下载 2.解压 3.修改配置环境 4.验证 5.使用mvn help:system就可以看到下载到本地仓库的文件 6.全局settings 7.建议在m2下拷贝一份属于个人的配置settings
- Python中 各种数字类型的判别(numerica, digital, decimal)
一. 全角和半角 全角:是指一个全角字符占用两个标准字符(或两个半角字符)的位置. 全角占两个字节. 汉字字符和规定了全角的英文字符及国标GB2312-80中的图形符号和特殊字符都是全角字符.在全角中 ...