pip install dlib 卡在 building wheel 是因 dlib 依赖 c++ 编译器和本地库,需按系统配置编译环境或下载匹配的预编译 wheel:windows 推荐直接安装第三方 wheel;macos/linux 需先装 xcode clt 或 build-essential+cmake;conda 用户应指定 conda-forge channel 安装。

为什么 pip install dlib 总卡在 building wheel?
因为 dlib 不是纯 Python 包,它底层严重依赖 C++ 编译器和 OpenCV、BLAS 等本地库。pip 默认会尝试从源码编译,一旦系统里缺 cmake、Visual Studio Build Tools(Windows)或 build-essential + cmake(Linux/macOS),就会报错停在 building 'dlib' extension 这一步。
常见错误现象包括:
error: Microsoft Visual C++ 14.0 or greater is requiredCould not find cmake executable-
Failed to build dlib后跟着一长串 C++ 编译失败日志
Windows 下绕过编译:直接装预编译 wheel
官方不提供 Windows 的 PyPI wheel,但第三方维护了兼容主流 Python 版本的二进制包。别碰 pip install dlib 直接跑,先确认你的环境:
- 用
python -c "import platform; print(platform.architecture())"看是32bit还是64bit - 用
python -c "import sys; print(sys.version_info[:2])"看 Python 版本,比如(3, 9)
然后去 https://pypi.org/project/dlib/#files 找对应 cp39-cp39-win_amd64.whl 这类文件名的 wheel(注意 cp39 对应 Python 3.9,win_amd64 对应 64 位 Windows)。下载后执行:
pip install dlib‑19.24.4‑cp39‑cp39‑win_amd64.whl
如果提示 ERROR: dlib‑...‑win_amd64.whl is not a supported wheel on this platform,说明 wheel 和你 Python 架构不匹配——重查 python -m pip debug --verbose 里的 tags 字段,选最靠前的那个 tag 对应的 wheel。
macOS / Linux 必须装好编译链再动手
macOS 上缺 Xcode Command Line Tools 是最常见原因;Linux 上缺 build-essential 和 cmake 会导致全程失败。别跳过这步:
- macOS:运行
xcode-select --install,装完再sudo xcode-select --reset - Ubuntu/Debian:运行
sudo apt update && sudo apt install build-essential cmake - CentOS/RHEL:运行
sudo yum groupinstall "Development Tools" && sudo yum install cmake
之后再装 dlib,推荐加 --no-cache-dir 避免旧编译产物干扰:
pip install --no-cache-dir dlib
如果仍报错说找不到 libpng 或 libjpeg,说明图像依赖没装全。Ubuntu 上补:sudo apt install libpng-dev libjpeg-dev libtiff-dev;macOS 补:brew install libpng jpeg libtiff。
用 conda 装 dlib 更稳,但要注意 channel 来源
conda 能自动解决 C++ 依赖,但默认 conda-forge 的 dlib 包比 PyPI 更新慢,且某些 Python 版本(如 3.12)还没支持。别用 conda install dlib(走的是 defaults channel,版本老旧),明确指定:
conda install -c conda-forge dlib
如果你用的是 M1/M2 Mac,注意 conda-forge 提供的 dlib wheel 是 osx-arm64 架构,必须用原生 arm64 Python(不是 Rosetta 下的 Intel Python),否则会 import 失败,报 mach-o, but wrong architecture。
另外,conda 安装后如果 import dlib 报 Symbol not found: _clock_gettime(macOS 10.12 以下),说明 conda 包编译时用了新版系统 API,只能升级 macOS 或切回 PyPI wheel 方案。
真正麻烦的从来不是命令敲几行,而是你不知道自己缺的是编译器、头文件,还是一个匹配的 wheel tag。看清错误第一行,比硬试十次 pip install 有用得多。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!











