在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文件:
安裝成功: