使用pip install dlib时遭遇legacy-install-failure错误求助
安装dlib时的编译错误排查
我在安装dlib时遇到了错误,一开始误以为是cmake的问题,已经通过pip install cmake成功安装了cmake,但执行pip install dlib仍然失败。
详细错误日志
-- Configuring incomplete, errors occurred! Traceback (most recent call last): File "<string>", line 2, in <module> File "<pip-setuptools-caller>", line 34, in <module> File "C:\Users\lenovo\AppData\Local\Temp\pip-install-zfdideoa\dlib_36bb0c7331c64241ba41d26308a57467\setup.py", line 222, in <module> setup( File "c:\users\lenovo\appdata\local\programs\python\python39\lib\site-packages\setuptools\__init__.py", line 87, in setup return distutils.core.setup(**attrs) File "c:\users\lenovo\appdata\local\programs\python\python39\lib\site-packages\setuptools\_distutils\core.py", line 185, in setup return run_commands(dist) File "c:\users\lenovo\appdata\local\programs\python\python39\lib\site-packages\setuptools\_distutils\core.py", line 201, in run_commands dist.run_commands() File "c:\users\lenovo\appdata\local\programs\python\python39\lib\site-packages\setuptools\_distutils\dist.py", line 969, in run_commands self.run_command(cmd) File "c:\users\lenovo\appdata\local\programs\python\python39\lib\site-packages\setuptools\dist.py", line 1208, in run_command super().run_command(command) File "c:\users\lenovo\appdata\local\programs\python\python39\lib\site-packages\setuptools\_distutils\dist.py", line 988, in run_command cmd_obj.run() File "c:\users\lenovo\appdata\local\programs\python\python39\lib\site-packages\wheel\bdist_wheel.py", line 325, in run self.run_command("build") File "c:\users\lenovo\appdata\local\programs\python\python39\lib\site-packages\setuptools\_distutils\cmd.py", line 318, in run_command self.distribution.run_command(command) File "c:\users\lenovo\appdata\local\programs\python\python39\lib\site-packages\setuptools\dist.py", line 1208, in run_command super().run_command(command) File "c:\users\lenovo\appdata\local\programs\python\python39\lib\site-packages\setuptools\_distutils\dist.py", line 988, in run_command cmd_obj.run() File "c:\users\lenovo\appdata\local\programs\python\python39\lib\site-packages\setuptools\_distutils\command\build.py", line 132, in run self.run_command(cmd_name) File "c:\users\lenovo\appdata\local\programs\python\python39\lib\site-packages\setuptools\_distutils\cmd.py", line 318, in run_command self.distribution.run_command(command) File "c:\users\lenovo\appdata\local\programs\python\python39\lib\site-packages\setuptools\dist.py", line 1208, in run_command super().run_command(command) File "c:\users\lenovo\appdata\local\programs\python\python39\lib\site-packages\setuptools\_distutils\dist.py", line 988, in run_command cmd_obj.run() File "C:\Users\lenovo\AppData\Local\Temp\pip-install-zfdideoa\dlib_36bb0c7331c64241ba41d26308a57467\setup.py", line 134, in run self.build_extension(ext) File "C:\Users\lenovo\AppData\Local\Temp\pip-install-zfdideoa\dlib_36bb0c7331c64241ba41d26308a57467\setup.py", line 171, in build_extension subprocess.check_call(cmake_setup, cwd=build_folder) File "c:\users\lenovo\appdata\local\programs\python\python39\lib\subprocess.py", line 373, in check_call raise CalledProcessError(retcode, cmd) subprocess.CalledProcessError: Command '["cmake", "C:\\Users\\lenovo\\AppData\\Local\\Temp\\pip-install-zfdideoa\\dlib_36bb0c7331c64241ba41d26308a57467\\tools\\python", "-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=C:\\Users\\lenovo\\AppData\\Local\\Temp\\pip-install-zfdideoa\\dlib_36bb0c7331c64241ba41d26308a57467\\build\\lib.win-amd64-cpython-39", "-DPYTHON_EXECUTABLE=c:\\users\\lenovo\\appdata\\local\\programs\\python\\python39\\python.exe", "-DCMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE=C:\\Users\\lenovo\\AppData\\Local\\Temp\\pip-install-zfdideoa\\dlib_36bb0c7331c64241ba41d26308a57467\\build\\lib.win-amd64-cpython-39", "-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 Running setup.py clean for dlib Failed to build dlib Installing collected packages: dlib Running setup.py install for dlib ... error error: subprocess-exited-with-error × Running setup.py install for dlib did not run successfully. │ exit code: 1 ╰─> [72 lines of output] running install c:\users\lenovo\appdata\local\programs\python\python39\lib\site-packages\setuptools\command\install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools. warnings.warn( running build running build_py running build_ext C:\Users\lenovo\AppData\Local\Temp\pip-install-zfdideoa\dlib_36bb0c7331c64241ba41d26308a57467\setup.py:129: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead. if LooseVersion(cmake_version) < '3.1.0': Building extension for Python 3.9.0 (tags/v3.9.0:9cf6752, Oct 5 2020, 15:34:40) [MSC v.1927 64 bit (AMD64)] Invoking CMake setup: 'cmake C:\Users\lenovo\AppData\Local\Temp\pip-install-zfdideoa\dlib_36bb0c7331c64241ba41d26308a57467\tools\python -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=C:\Users\lenovo\AppData\Local\Temp\pip-install-zfdideoa\dlib_36bb0c7331c64241ba41d26308a57467\build\lib.win-amd64-cpython-39 -DPYTHON_EXECUTABLE=c:\users\lenovo\appdata\local\programs\python\python39\python.exe -DCMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE=C:\Users\lenovo\AppData\Local\Temp\pip-install-zfdideoa\dlib_36bb0c7331c64241ba41d26308a57467\build\lib.win-amd64-cpython-39 -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 "<string>", line 2, in <module> File "<pip-setuptools-caller>", line 34, in <module> File "C:\Users\lenovo\AppData\Local\Temp\pip-install-zfdideoa\dlib_36bb0c7331c64241ba41d26308a57467\setup.py", line 222, in <module> setup( File "c:\users\lenovo\appdata\local\programs\python\python39\lib\site-packages\setuptools\__init__.py", line 87, in setup return distutils.core.setup(**attrs) File "c:\users\lenovo\appdata\local\programs\python\python39\lib\site-packages\setuptools\_distutils\core.py", line 185, in setup return run_commands(dist) File "c:\users\lenovo\appdata\local\programs\python\python39\lib\site-packages\setuptools\_distutils\core.py", line 201, in run_commands dist.run_commands() File "c:\users\lenovo\appdata\local\programs\python\python39\lib\site-packages\setuptools\_distutils\dist.py", line 969, in run_commands self.run_command(cmd) File "c:\users\lenovo\appdata\local\programs\python\python39\lib\site-packages\setuptools\dist.py", line 1208, in run_command super().run_command(command) File "c:\users\lenovo\appdata\local\programs\python\python39\lib\site-packages\setuptools\_distutils\dist.py", line 988, in run_command cmd_obj.run() File "c:\users\lenovo\appdata\local\programs\python\python39\lib\site-packages\setuptools\command\install.py", line 68, in run return orig.install.run(self) File "c:\users\lenovo\appdata\local\programs\python\python39\lib\site-packages\setuptools\_distutils\command\install.py", line 698, in run self.run_command('build') File "c:\users\lenovo\appdata\local\programs\python\python39\lib\site-packages\setuptools\_distutils\cmd.py", line 318, in run_command self.distribution.run_command(command) File "c:\users\lenovo\appdata\local\programs\python\python39\lib\site-packages\setuptools\dist.py", line 1208, in run_command super().run_command(command) File "c:\users\lenovo\appdata\local\programs\python\python39\lib\site-packages\setuptools\_distutils\dist.py", line 988, in run_command cmd_obj.run() File "c:\users\lenovo\appdata\local\programs\python\python39\lib\site-packages\setuptools\_distutils\command\build.py", line 132, in run self.run_command(cmd_name) File "c:\users\lenovo\appdata\local\programs\python\python39\lib\site-packages\setuptools\_distutils\cmd.py", line 318, in run_command self.distribution.run_command(command) File "c:\users\lenovo\appdata\local\programs\python\python39\lib\site-packages\setuptools\dist.py", line 1208, in run_command super().run_command(command) File "c:\users\lenovo\appdata\local\programs\python\python39\lib\site-packages\setuptools\_distutils\dist.py", line 988, in run_command cmd_obj.run() File "C:\Users\lenovo\AppData\Local\Temp\pip-install-zfdideoa\dlib_36bb0c7331c64241ba41d26308a57467\setup.py", line 134, in run self.build_extension(ext) File "C:\Users\lenovo\AppData\Local\Temp\pip-install-zfdideoa\dlib_36bb0c7331c64241ba41d26308a57467\setup.py", line 171, in build_extension subprocess.check_call(cmake_setup, cwd=build_folder) File "c:\users\lenovo\appdata\local\programs\python\python39\lib\subprocess.py", line 373, in check_call raise CalledProcessError(retcode, cmd) subprocess.CalledProcessError: Command '["cmake", "C:\\Users\\lenovo\\AppData\\Local\\Temp\\pip-install-zfdideoa\\dlib_36bb0c7331c64241ba41d26308a57467\\tools\\python", "-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=C:\\Users\\lenovo\\AppData\\Local\\Temp\\pip-install-zfdideoa\\dlib_36bb0c7331c64241ba41d26308a57467\\build\\lib.win-amd64-cpython-39", "-DPYTHON_EXECUTABLE=c:\\users\\lenovo\\appdata\\local\\programs\\python\\python39\\python.exe", "-DCMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE=C:\\Users\\lenovo\\AppData\\Local\\Temp\\pip-install-zfdideoa\\dlib_36bb0c7331c64241ba41d26308a57467\\build\\lib.win-amd64-cpython-39", "-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: legacy-install-failure × Encountered error while trying to install package. ╰─> dlib note: This is an issue with the package mentioned above, not pip. hint: See above for output from the failure.
关键错误信息
日志中明确指出核心问题:
在Windows上构建Python扩展必须使用Visual Studio。出现此错误说明你未安装Visual C++。注意Visual Studio有多个版本,比如针对C#开发的版本,你需要安装针对C++开发的Visual Studio。
已尝试操作
pip install cmake:执行成功pip install dlib:执行失败
解决步骤
- 下载安装Visual Studio社区版(免费),安装过程中必须勾选「桌面开发使用C++」组件,该组件包含MSVC编译器、Windows SDK等编译dlib必需的工具
- 安装完成后,重启你的命令行终端或开发环境,确保编译器相关环境变量生效
- 重新执行
pip install dlib;若仍有编译问题,可尝试安装预编译的dlib包,跳过自行编译步骤:pip install dlib-bin
内容的提问来源于stack exchange,提问作者user20909913
相关产品推荐
相关产品推荐

