参考:https://blog.csdn.net/wc781708249/article/details/78562902
1.pip3 install dlib
C:\Users\***>pip3 install dlib
Collecting dlib
Downloading https://files.pythonhosted.org/packages/df/aa/6a9bb2a763107bb2606d
6ee1aa65fcd3b51375a9ef6436e9c9280b0dd63c/dlib-19.15.0.tar.gz (3.3MB)
99% |████████████████████████████████| 3.3MB
100% |████████████████████████████████| 3.3M
Installing collected packages: dlib
Running setup.py install for dlib ... error
Exception:
Traceback (most recent call last):
File "d:\python\python36-32\lib\site-packages\pip\compat\__init__.py", line 73, in console_to_str
return s.decode(sys.__stdout__.encoding)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd5 in position 36: invalid continuation byte
解决方案
网上方案:编码问题。Python 3.x 默认utf_8,windows下显示依然是gbk。
改一下...\lib\site-packages\pip\compat\__init__.py中return s.decode('utf_8') 改为return s.decode('cp936')
实测:cp936是什么意思呢?
得到Python群里一位高人指点,明白了cp936就是指系统里第936号编码格式,也就是GB2312。
可以看表:
936 gb2312 简体中文(GB2312)
在python的模块locale中输出的结果:
>>> import locale
>>> encoding=locale.getdefaultlocale()
>>> print encoding
('zh_CN', 'cp936')
如图所示,return s.decode('cp936')放在73行下面还是75行下面呢
>>> import sys
>>> print (sys.__stdout__.encoding)
utf-8
将D:\Python\Python36-32\Lib\site-packages\pip\compat\__init__.py保存修改,再运行pip3 install
C:\Users\zhangming>pip3 install dlib
Traceback (most recent call last):
File "d:\python\python36-32\lib\runpy.py", line 193, in _run_module_as_main
"__main__", mod_spec)
File "d:\python\python36-32\lib\runpy.py", line 85, in _run_code exec(code, run_globals)
File "D:\Python\Python36-32\Scripts\pip3.exe\__main__.py", line 5, in <module>
File "d:\python\python36-32\lib\site-packages\pip\__init__.py", line 43, in <module>
from pip.utils import get_installed_distributions, get_prog
File "d:\python\python36-32\lib\site-packages\pip\utils\__init__.py", line 22,in <module>
from pip.compat import console_to_str, expanduser, stdlib_pkgs
File "d:\python\python36-32\lib\site-packages\pip\compat\__init__.py", line 74
return s.decode('cp936')
^
TabError: inconsistent use of tabs and spaces in indentation
这个错误是说你用了tab键作缩进了,
因为在python不像C/C++里用大括号来区分程序块,而是用缩进
所以缩进很重要你把Tab换成空格就好了
return s.decode('cp936') 回退到顶,然后用空格将格式调到跟之前一样。继续pip3 install
C:\Users\zhangming>pip3 install dlib
Collecting dlib
Using cached https://files.pythonhosted.org/packages/df/aa/6a9bb2a763107bb2606
d6ee1aa65fcd3b51375a9ef6436e9c9280b0dd63c/dlib-19.15.0.tar.gz
Installing collected packages: dlib
Running setup.py install for dlib ... error
Complete output from command d:\python\python36-32\python.exe -u -c "import
setuptools, tokenize;__file__='C:\\Users\\ZHANGM~1\\AppData\\Local\\Temp\\pip-bu
ild-2io03k_m\\dlib\\setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f
.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" i
nstall --record C:\Users\ZHANGM~1\AppData\Local\Temp\pip-zvdy9qb6-record\install
-record.txt --single-version-externally-managed --compile:
running install
running build
running build_py
package init file 'dlib\__init__.py' not found (or not a regular file)
running build_ext
Traceback (most recent call last):
File "C:\Users\ZHANGM~1\AppData\Local\Temp\pip-build-2io03k_m\dlib\setup.py", line 118, in get_cmake_version
out = subprocess.check_output(['cmake', '--version'])
File "d:\python\python36-32\lib\subprocess.py", line 336, in check_output **kwargs).stdout
File "d:\python\python36-32\lib\subprocess.py", line 403, in run with Popen(*popenargs, **kwargs) as process:
File "d:\python\python36-32\lib\subprocess.py", line 709, in __init__ restore_signals, start_new_session)
File "d:\python\python36-32\lib\subprocess.py", line 997, in _execute_child startupinfo)
FileNotFoundError: [WinError 2] 系统找不到指定的文件。
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "C:\Users\ZHANGM~1\AppData\Local\Temp\pip-build-2io03k_m\dlib\setup.py", line 257, in <module>
'Topic :: Software Development',
File "d:\python\python36-32\lib\site-packages\setuptools\__init__.py", line 129, in setup return distutils.core.setup(**attrs)
File "d:\python\python36-32\lib\distutils\core.py", line 148, in setup dist.run_commands()
File "d:\python\python36-32\lib\distutils\dist.py", line 955, in run_commands self.run_command(cmd)
File "d:\python\python36-32\lib\distutils\dist.py", line 974, in run_command cmd_obj.run()
File "d:\python\python36-32\lib\site-packages\setuptools\command\install.py", line 61, in run return orig.install.run(self)
File "d:\python\python36-32\lib\distutils\command\install.py", line 545, in run self.run_command('build')
File "d:\python\python36-32\lib\distutils\cmd.py", line 313, in run_command self.distribution.run_command(command)
File "d:\python\python36-32\lib\distutils\dist.py", line 974, in run_command cmd_obj.run()
File "d:\python\python36-32\lib\distutils\command\build.py", line 135, inrun self.run_command(cmd_name)
File "d:\python\python36-32\lib\distutils\cmd.py", line 313, in run_command self.distribution.run_command(command)
File "d:\python\python36-32\lib\distutils\dist.py", line 974, in run_command cmd_obj.run()
File "C:\Users\ZHANGM~1\AppData\Local\Temp\pip-build-2io03k_m\dlib\setup.py", line 127, in run
cmake_version = self.get_cmake_version()
File "C:\Users\ZHANGM~1\AppData\Local\Temp\pip-build-2io03k_m\dlib\setup.py", line 123, in get_cmake_version
"\n*******************************************************************\n")
RuntimeError:
*******************************************************************
CMake must be installed to build the following extensions: dlib
*******************************************************************
----------------------------------------
Command "d:\python\python36-32\python.exe -u -c "import setuptools, tokenize;__f
ile__='C:\\Users\\ZHANGM~1\\AppData\\Local\\Temp\\pip-build-2io03k_m\\dlib\\setu
p.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n',
'\n');f.close();exec(compile(code, __file__, 'exec'))" install --record C:\Users
\ZHANGM~1\AppData\Local\Temp\pip-zvdy9qb6-record\install-record.txt --single-ver
sion-externally-managed --compile" failed with error code 1 in C:\Users\ZHANGM~1
\AppData\Local\Temp\pip-build-2io03k_m\dlib\
C:\Users\zhangming>
pip3 install cmake安装cmake成功。继续pip3 install dlib:
Running setup.py install for dlib ... error
Invoking CMake setup: 'cmake C:\Users\ZHANGM~1\AppData\Local\Temp\pip-build-
t54uc88q\dlib\tools\python -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=C:\Users\ZHANGM~1\Ap
pData\Local\Temp\pip-build-t54uc88q\dlib\build\lib.win32-3.6 -DPYTHON_EXECUTABLE
=d:\python\python36-32\python.exe -DCMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE=C:\Us
ers\ZHANGM~1\AppData\Local\Temp\pip-build-t54uc88q\dlib\build\lib.win32-3.6'
-- Building for: NMake Makefiles
-- The C compiler identification is unknown
-- The CXX compiler identification is unknown
CMake Error in CMakeLists.txt
引起这个错误的原因是 CMake 找不到 C++ 的编译器,检查 VS 的安装目录是否有 cl.exe 以及 rc.exe 和 rcdll.dll。
如果没有 cl.exe,那么可能是只安装了VS,没有安装 VC 编译器,打开VS,选择 VC 安装即可。
如果没有 rc.exe 和 rcdll.dll,这是编译资源用的,可能安装在 Windows SDK 中,直接复制这两个文件到 VC/bin 目录下即可。
安装VS2017的C++组件,重启电脑,重新pip3 install dlib,安装成功!