从源代码编译并构建 dlib 的二进制包

举报
黄生 发表于 2025/03/25 10:46:11 2025/03/25
【摘要】 dlib 是一个广泛使用的机器学习库,特别擅长处理图像处理、人脸识别、目标检测等任务。dlib 的开发者是 Davis King,他是一位计算机视觉和机器学习领域的专家。当执行 pip install dlib==19.17.0 并显示 Building wheels for collected packages: dlib 时,系统正在从源代码编译并构建 dlib 的二进制包。这一过程涉及...

dlib 是一个广泛使用的机器学习库,特别擅长处理图像处理、人脸识别、目标检测等任务。dlib 的开发者是 Davis King,他是一位计算机视觉和机器学习领域的专家。

当执行 pip install dlib==19.17.0 并显示 Building wheels for collected packages: dlib 时,系统正在从源代码编译并构建 dlib 的二进制包。这一过程涉及以下:

1. 从源代码下载与解压

pip 会先下载 dlib 的源代码包(.tar.gz 文件),并解压到临时目录。dlib 是一个基于 C++ 的库,源代码包含大量 C++ 文件及依赖项,解压后需要处理复杂的项目结构。

2. 配置构建工具(CMake)

dlib 依赖 CMake 作为跨平台的编译工具。此时,系统会运行 setup.py 脚本,调用 CMake 配置编译参数(如指定编译器路径、依赖库路径等)。

3. 编译 C++ 代码

核心耗时环节:dlib 的 C++ 代码需要被编译为机器码。例如:

  • 人脸检测算法(如 HOG 特征提取)、神经网络模型(如 ResNet)等涉及大量矩阵运算和优化代码。
  • 编译过程中,编译器(如 MSVC、GCC)会对代码进行优化,生成适用于当前操作系统和硬件架构的二进制文件。

4. 生成 Python 可调用的二进制包(Wheel)

编译完成后,系统会将生成的动态链接库(如 .pyd.so 文件)打包为 Wheel 文件(.whl),并安装到 Python 的 site-packages 目录。此步骤完成后,用户即可通过 import dlib 调用库。

为何需要等待较长时间?

代码规模大:dlib 包含数十万行 C++ 代码,编译时需要逐文件处理。
优化级别高:默认启用编译器优化(如 -O3),提升性能但增加编译时间。
依赖复杂:需链接 Boost 等外部库(部分系统可能需手动安装)。
硬件限制:CPU 性能、内存大小直接影响编译速度。例如,树莓派等低配设备可能需要数十分钟。

如何避免编译等待?

  1. pip wheel dlib==19.17.0 --wheel-dir=/home/ma-user/work #保存编译后的库,以备下次直接使用。编译需要3分钟(8核CPU)
  2. 编译完成后
    #-rw-r----- 1 ma-user ma-group 4190842 Mar 25 09:49 dlib-19.17.0-cp36-cp36m-linux_x86_64.whl
  3. 安装即可:pip install --no-index --find-links=/home/ma-user/work dlib==19.17.0

其他

在 Jupyter Notebook (2核CPU + 4GB内存)​中运行 pip install 命令后出现 ​**“No Kernel”** 状态。是​资源耗尽导致内核崩溃,因为换8核64G内存的环境就好了。
​内存不足:安装某些大型包(如 TensorFlow、PyTorch)时内存溢出,触发内核终止。
​CPU 过载:编译依赖或复杂安装步骤可能导致 CPU 长时间满载,内核失去响应。
​表现:安装过程中 Notebook 突然卡顿,随后内核状态变为 “No Kernel”。

dlib-19.17.0-cp36-cp36m-linux_x86_64.whl Python 包的轮子文件名解释
cp36表示该轮子文件是为 CPython 3.6 版本编译的。cp 是 CPython 的缩写,36 表示 Python 3.6。
cp36m指定了 Python 的 ABI(应用二进制接口)版本。cp36m 表示该轮子文件是为 CPython 3.6 的 m ABI 编译的。m 表示该 Python 版本启用了 --with-pymalloc 选项。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。