构建人脸识别工具时安装dlib遇wheel编译失败,已装CMake/VS如何修复?
我正在开发一款人脸识别工具,多次尝试安装dlib均失败,报错核心提示如下:
CMake Error at CMakeLists.txt:5 (message):
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!You must use Visual Studio to build a python extension on windows. If you
are getting this error it means you have not installed Visual C++. Note
that there are many flavors of Visual Studio, like Visual Studio for C#
development. You need to install Visual Studio for C++.!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
完整报错输出:
× Building wheel for dlib (pyproject.toml) did not run successfully. │ exit code: 1 ╰─> [78 lines of output] running bdist_wheel running build running build_ext <string>:125: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead. Building extension for Python 3.11.4 (tags/v3.11.4:d2340ef, Jun 7 2023, 05:45:37) [MSC v.1934 64 bit (AMD64)] Invoking CMake setup: 'cmake C:\Users\Jack\AppData\Local\Temp\pip-install-tl9fdcf0\dlib_fee2183dfbb9404395bfedaca5728c1a\tools\python -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=C:\Users\Jack\AppData\Local\Temp\pip-install-tl9fdcf0\dlib_fee2183dfbb9404395bfedaca5728c1a\build\lib.win-amd64-cpython-311 -DPYTHON_EXECUTABLE=C:\Users\Jack\AppData\Local\Programs\Python\Python311\python.exe -DCMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE=C:\Users\Jack\AppData\Local\Temp\pip-install-tl9fdcf0\dlib_fee2183dfbb9404395bfedaca5728c1a\build\lib.win-amd64-cpython-311 -A x64' -- Building for: NMake Makefiles CMake Error at CMakeLists.txt:5 (message): !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! You must use Visual Studio to build a python extension on windows. If you are getting this error it means you have not installed Visual C++. Note that there are many flavors of Visual Studio, like Visual Studio for C# development. You need to install Visual Studio for C++. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -- Configuring incomplete, errors occurred! Traceback (most recent call last): File "C:\Users\Jack\AppData\Local\Programs\Python\Python311\Lib\site-packages\pip\_vendor\pyproject_hooks\_in_process\_in_process.py", line 353, in <module> main() File "C:\Users\Jack\AppData\Local\Programs\Python\Python311\Lib\site-packages\pip\_vendor\pyproject_hooks\_in_process\_in_process.py", line 335, in main json_out['return_val'] = hook(**hook_input['kwargs']) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\Jack\AppData\Local\Programs\Python\Python311\Lib\site-packages\pip\_vendor\pyproject_hooks\_in_process\_in_process.py", line 251, in build_wheel return _build_backend().build_wheel(wheel_directory, config_settings, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\Jack\AppData\Local\Temp\pip-build-env-ar6t1xkr\overlay\Lib\site-packages\setuptools\build_meta.py", line 416, in build_wheel return self._build_with_temp_dir(['bdist_wheel'], '.whl', ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\Jack\AppData\Local\Temp\pip-build-env-ar6t1xkr\overlay\Lib\site-packages\setuptools\build_meta.py", line 401, in _build_with_temp_dir self.run_setup() File "C:\Users\Jack\AppData\Local\Temp\pip-build-env-ar6t1xkr\overlay\Lib\site-packages\setuptools\build_meta.py", line 338, in run_setup exec(code, locals()) File "<string>", line 218, in <module> File "C:\Users\Jack\AppData\Local\Temp\pip-build-env-ar6t1xkr\overlay\Lib\site-packages\setuptools\__init__.py", line 107, in setup return distutils.core.setup(**attrs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\Jack\AppData\Local\Temp\pip-build-env-ar6t1xkr\overlay\Lib\site-packages\setuptools\_distutils\core.py", line 185, in setup return run_commands(dist) ^^^^^^^^^^^^^^^^^^ File "C:\Users\Jack\AppData\Local\Temp\pip-build-env-ar6t1xkr\overlay\Lib\site-packages\setuptools\_distutils\core.py", line 201, in run_commands dist.run_commands() File "C:\Users\Jack\AppData\Local\Temp\pip-build-env-ar6t1xkr\overlay\Lib\site-packages\setuptools\_distutils\dist.py", line 969, in run_commands self.run_command(cmd) File "C:\Users\Jack\AppData\Local\Temp\pip-build-env-ar6t1xkr\overlay\Lib\site-packages\setuptools\dist.py", line 1234, in run_command super().run_command(command) File "C:\Users\Jack\AppData\Local\Temp\pip-build-env-ar6t1xkr\overlay\Lib\site-packages\setuptools\_distutils\dist.py", line 988, in run_command cmd_obj.run() File "C:\Users\Jack\AppData\Local\Temp\pip-build-env-ar6t1xkr\overlay\Lib\site-packages\wheel\bdist_wheel.py", line 343, in run self.run_command("build") File "C:\Users\Jack\AppData\Local\Temp\pip-build-env-ar6t1xkr\overlay\Lib\site-packages\setuptools\_distutils\cmd.py", line 318, in run_command self.distribution.run_command(command) File "C:\Users\Jack\AppData\Local\Temp\pip-build-env-ar6t1xkr\overlay\Lib\site-packages\setuptools\dist.py", line 1234, in run_command super().run_command(command) File "C:\Users\Jack\AppData\Local\Temp\pip-build-env-ar6t1xkr\overlay\Lib\site-packages\setuptools\_distutils\dist.py", line 988, in run_command cmd_obj.run() File "C:\Users\Jack\AppData\Local\Temp\pip-build-env-ar6t1xkr\overlay\Lib\site-packages\setuptools\_distutils\command\build.py", line 131, in run self.run_command(cmd_name) File "C:\Users\Jack\AppData\Local\Temp\pip-build-env-ar6t1xkr\overlay\Lib\site-packages\setuptools\_distutils\cmd.py", line 318, in run_command self.distribution.run_command(command) File "C:\Users\Jack\AppData\Local\Temp\pip-build-env-ar6t1xkr\overlay\Lib\site-packages\setuptools\dist.py", line 1234, in run_command super().run_command(command) File "C:\Users\Jack\AppData\Local\Temp\pip-build-env-ar6t1xkr\overlay\Lib\site-packages\setuptools\_distutils\dist.py", line 988, in run_command cmd_obj.run() File "<string>", line 130, in run File "<string>", line 167, in build_extension File "C:\Users\Jack\AppData\Local\Programs\Python\Python311\Lib\subprocess.py", line 413, in check_call raise CalledProcessError(retcode, cmd) subprocess.CalledProcessError: Command '['cmake', 'C:\\Users\\Jack\\AppData\\Local\\Temp\\pip-install-tl9fdcf0\\dlib_fee2183dfbb9404395bfedaca5728c1a\\tools\\python', '-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=C:\\Users\\Jack\\AppData\\Local\\Temp\\pip-install-tl9fdcf0\\dlib_fee2183dfbb9404395bfedaca5728c1a\\build\\lib.win-amd64-cpython-311', '-DPYTHON_EXECUTABLE=C:\\Users\\Jack\\AppData\\Local\\Programs\\Python\\Python311\\python.exe', '-DCMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE=C:\\Users\\Jack\\AppData\\Local\\Temp\\pip-install-tl9fdcf0\\dlib_fee2183dfbb9404395bfedaca5728c1a\\build\\lib.win-amd64-cpython-311', '-A', 'x64']' returned non-zero exit status 1. [end of output] note: This error originates from a subprocess, and is likely not a problem with pip. ERROR: Failed building wheel for dlib Failed to build dlib ERROR: Could not build wheels for dlib, which is required to install pyproject.toml-based projects
我已经安装了CMake和Visual Studio,但还是收到这个错误,请问该如何修复?
1. 确认Visual Studio安装了C++开发组件
打开Visual Studio Installer,检查已安装的工作负载:
- 勾选**“使用C++的桌面开发”**工作负载,确保包含MSVC编译器、Windows SDK等核心组件
- 如果之前只装了其他工作负载(比如C#),补充安装后重启电脑
2. 使用VS原生命令行环境安装
找到并打开x64 Native Tools Command Prompt for Visual Studio(对应你的VS版本),在该窗口中执行:
pip install dlib
这个环境已经自动配置好VS编译器路径和相关环境变量,CMake会默认使用Visual Studio生成器而非NMake。
3. 手动指定CMake生成器
如果不想切换命令行环境,可在安装时直接指定生成器:
pip install dlib --install-option="--cmake-generator=Visual Studio 17 2022"
注意替换Visual Studio 17 2022为你实际安装的VS版本(比如VS 2019对应Visual Studio 16 2019)。
4. 安装预编译的dlib包
若编译仍失败,可直接使用第三方预编译版本跳过编译步骤:
pip install dlib-bin
dlib-bin是已编译好的wheel包,适配常见Python版本和Windows系统。
内容的提问来源于stack exchange,提问作者Epic Gaming 2

