pip install dlib,找不到 Cmake 错误编译器



当我想安装 pip install dlib 时,它给了我这个错误,我已经安装了 MSVC v142-vs 2019 C++ x64 构建工具和适用于 Windows 的 C++ Cmake 工具,但我什至尝试过同样的错误 网络桌面构建工具 却不行。有谁知道如何克服这个烦人的错误?

蟒蛇 32 3.7 视窗 7

Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.
C:Users>pip install dlib
Collecting dlib
Using cached https://files.pythonhosted.org/packages/05/57/e8a8caa3c89a27f80bc
78da39c423e2553f482a3705adc619176a3a24b36/dlib-19.17.0.tar.gz
Installing collected packages: dlib
Running setup.py install for dlib ... error
ERROR: Command errored out with exit status 1:
command: 'c:usersappdatalocalprogramspythonpython37-32python.e
xe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\Users
\AppData\Local\Temp\pip-install-7jf_6geq\dlib\setup.py'"'"'; __file__='"'"
'C:\Users\AppData\Local\Temp\pip-install-7jf_6geq\dlib\setup.py'"'
"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'
"'rn'"'"', '"'"'n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'
))' install --record 'C:UsersAppDataLocalTemppip-record-a0stlurainst
all-record.txt' --single-version-externally-managed --compile
cwd: C:UsersAppDataLocalTemppip-install-7jf_6geqdlib
Complete output (80 lines):
running install
running build
running build_py
package init file 'dlib__init__.py' not found (or not a regular file)
running build_ext
Building extension for Python 3.7.1 (v3.7.1:260ec2c36a, Oct 20 2018, 14:05:1
6) [MSC v.1915 32 bit (Intel)]
Invoking CMake setup: 'cmake C:UsersAppDataLocalTemppip-install-7
jf_6geqdlibtoolspython -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=C:UsersAppDat
aLocalTemppip-install-7jf_6geqdlibbuildlib.win32-3.7 -DPYTHON_EXECUTABLE=c
:usersappdatalocalprogramspythonpython37-32python.exe -DCMAKE_LIBRA
RY_OUTPUT_DIRECTORY_RELEASE=C:UsersAppDataLocalTemppip-install-7jf_6g
eqdlibbuildlib.win32-3.7'
-- Building for: NMake Makefiles
-- The C compiler identification is unknown
-- The CXX compiler identification is unknown
CMake Error in CMakeLists.txt:
The CMAKE_C_COMPILER:
cl
is not a full path and was not found in the PATH.
To use the NMake generator with Visual C++, cmake must be run from a shell
that can use the compiler cl from the command line.  This environment is
unable to invoke the cl compiler.  To fix this problem, run cmake from the
Visual Studio Command Prompt (vcvarsall.bat).
Tell CMake where to find the compiler by setting either the environment
variable "CC" or the CMake cache entry CMAKE_C_COMPILER to the full path t
o
the compiler, or to the compiler name if it is in the PATH.

CMake Error in CMakeLists.txt:
The CMAKE_CXX_COMPILER:
cl
is not a full path and was not found in the PATH.
To use the NMake generator with Visual C++, cmake must be run from a shell
that can use the compiler cl from the command line.  This environment is
unable to invoke the cl compiler.  To fix this problem, run cmake from the
Visual Studio Command Prompt (vcvarsall.bat).
Tell CMake where to find the compiler by setting either the environment
variable "CXX" or the CMake cache entry CMAKE_CXX_COMPILER to the full pat
h
to the compiler, or to the compiler name if it is in the PATH.

-- Configuring incomplete, errors occurred!
See also "C:/Users/AppData/Local/Temp/pip-install-7jf_6geq/dlib/build/
temp.win32-3.7/Release/CMakeFiles/CMakeOutput.log".
See also "C:/Users/AppData/Local/Temp/pip-install-7jf_6geq/dlib/build/
temp.win32-3.7/Release/CMakeFiles/CMakeError.log".
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "C:UsersAppDataLocalTemppip-install-7jf_6geqdlibsetup.py
", line 261, in <module>
'Topic :: Software Development',
File "c:usersappdatalocalprogramspythonpython37-32libsite-pa
ckagessetuptools__init__.py", line 143, in setup
return distutils.core.setup(**attrs)
File "c:usersappdatalocalprogramspythonpython37-32libdistuti
lscore.py", line 148, in setup
dist.run_commands()
File "c:usersappdatalocalprogramspythonpython37-32libdistuti
lsdist.py", line 966, in run_commands
self.run_command(cmd)
File "c:usersappdatalocalprogramspythonpython37-32libdistuti
lsdist.py", line 985, in run_command
cmd_obj.run()
File "c:usersappdatalocalprogramspythonpython37-32libsite-pa
ckagessetuptoolscommandinstall.py", line 61, in run
return orig.install.run(self)
File "c:usersappdatalocalprogramspythonpython37-32libdistuti
lscommandinstall.py", line 545, in run
self.run_command('build')
File "c:usersappdatalocalprogramspythonpython37-32libdistuti
lscmd.py", line 313, in run_command
self.distribution.run_command(command)
File "c:usersappdatalocalprogramspythonpython37-32libdistuti
lsdist.py", line 985, in run_command
cmd_obj.run()
File "c:usersappdatalocalprogramspythonpython37-32libdistuti
lscommandbuild.py", line 135, in run
self.run_command(cmd_name)
File "c:usersappdatalocalprogramspythonpython37-32libdistuti
lscmd.py", line 313, in run_command
self.distribution.run_command(command)
File "c:usersappdatalocalprogramspythonpython37-32libdistuti
lsdist.py", line 985, in run_command
cmd_obj.run()
File "C:UsersAppDataLocalTemppip-install-7jf_6geqdlibsetup.py
", line 135, in run
self.build_extension(ext)
File "C:UsersAppDataLocalTemppip-install-7jf_6geqdlibsetup.py
", line 172, in build_extension
subprocess.check_call(cmake_setup, cwd=build_folder)
File "c:usersappdatalocalprogramspythonpython37-32libsubproc
ess.py", line 341, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['cmake', 'C:\Users\AppData
\Local\Temp\pip-install-7jf_6geq\dlib\tools\python', '-DCMAKE_LIBRARY_OUTP
UT_DIRECTORY=C:\Users\AppData\Local\Temp\pip-install-7jf_6geq\dlib
build\lib.win32-3.7', '-DPYTHON_EXECUTABLE=c:\users\appdata\local\p
rograms\python\python37-32\python.exe', '-DCMAKE_LIBRARY_OUTPUT_DIRECTORY_REL
EASE=C:\Users\AppData\Local\Temp\pip-install-7jf_6geq\dlib\build\
lib.win32-3.7']' returned non-zero exit status 1.
----------------------------------------
ERROR: Command errored out with exit status 1: 'c:usersappdatalocalpro
gramspythonpython37-32python.exe' -u -c 'import sys, setuptools, tokenize; sy
s.argv[0] = '"'"'C:\Users\AppData\Local\Temp\pip-install-7jf_6geq\d
lib\setup.py'"'"'; __file__='"'"'C:\Users\AppData\Local\Temp\pip-in
stall-7jf_6geq\dlib\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__
file__);code=f.read().replace('"'"'rn'"'"', '"'"'n'"'"');f.close();exec(compi
le(code, __file__, '"'"'exec'"'"'))' install --record 'C:UsersAppDataLo
calTemppip-record-a0stlurainstall-record.txt' --single-version-externally-man
aged --compile Check the logs for full command output.
C:Users>

基本上发生的事情是,在Windows中,由于某种原因,Cmake默认使用Nmake。有多种方法可以避免这种情况,可以说最简单的方法是安装Visual C++ Build Tools,正如错误本身所暗示的那样。

要将 NMake 生成器与 Visual C++一起使用,cmake 必须从可以从命令行使用编译器 cl 的 shell 运行。 此环境无法调用 cl 编译器。 若要解决此问题,请从 Visual Studio 命令提示符 (vcvarsall.bat( 运行 cmake。通过将环境变量"CC"或 CMake 缓存条目CMAKE_C_COMPILER设置为编译器的完整路径或编译器名称(如果它在 PATH 中(,告诉 CMake 在何处查找编译器。

下载Build Tools for Visual Studio 2019后,在应用程序打开时选中Visual C++ Build Tools,然后点击安装。

现在尝试从命令行执行pip install dlib(这次将使用 CMake 而不是 NMake(。

最新更新