dlib 19 安装成功 ( winows python38)

时间:2024-03-12 10:08:40

在windows python 3.8 环境成功安装 dlib 19.19.0

 

一、 使用pip 安装dlib失败。

 

     1. 安装dlib之前需要先安装cmake.

         使用pip 安装cmake顺利。安装的版本为目前最新版3.16.3 .

 

     2. 使用pip安装dlib失败。

        报错显示:Python config failure: Python is 32-bit, chosen compiler is 64-bit

 

二、 安装失败原因分析:

     1. 根据提示检查了本地环境:

(1) python版本:Python 3.8.1 [MSC v.1916 32 bit (Intel)] on win32

(2)编译器版本:

查看打印信息中的这一条:

Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.20.27508/bin/Hostx64/x64/cl.exe

 

2. 原因分析:

    Setup.py 调用了cmake,使用本机安装的64位VC作为编译器,导致错误发生。本机安装的python3.8是32位的。

 

三、 解决办法

      放弃pip安装,手动下载dlib最新版本,执行setup.py进行安装。

     下载的dlib为最新版本19.19.

 

     1. 通过设置参数调用setup.py。

        打开setup.py文件,可以看到如下提示信息:

       

 

       可见,通过-G参数可以设置编译器的类型。

 

        2. 尝试setup.py  -G参数 失败

 

 

 

    可见,-G 为 Generator的简称。

    Cmake安装成功后,存放在python安装目录下的Lib\site-packages\cmake\data\bin。其中cmake-gui.exe为UI界面。通过此界面,可以看出cmake -A 参数的四个可选值:ARM64,ARM,WIN32和x64。

 

 

 尝试指定编译器为32位:

 

 

  执行失败,cmake没有正确的识别generator的名字。如果不执行-A win32则依然选择编译器为64位。

   不知道如何通过-G参数指定编译器为 win32。

 

3. 逐行查看setup.py文件,注释掉setup.py中的cmake调用,改为手工调用cmake 成功。

 Setup的主要功能为收集用户参数,调用cmake,安装到python。

于是根据打印信息和程序代码可定位到调用cmake的地方:

(1)第一处:

 

 

 通过打印信息可以看到,cmake_setup的内容为:

 

 

 其执行失败的原因为 -G 后面的参数 visual studio 16 2019 -A win32没有被正确的识别。因此,调整参数改为手动执行,执行成功。

 

(2)第二处:

 

 通过打印信息可以看到,cmake_build的内容为:

cmake --build . --config Release -- /m

 

 

   执行成功。

 

(3)把setup.py中的对cmake的调用注释掉,再次执行setup.py。安装成功。

注释后的setup.py对应行:

 

再次执行setup.py文件:

 

安装成功: