最近想用一下dlib庫,發現在win10上如果沒有visual studio的話安裝python版本有點麻煩,現在記錄一下使用minGW自己編譯安裝自己想要的python版本。
先說明我的作業系統是
win10 64位,
python版本是3.7.6,
cmake版本是3.16.4,
minGW版本是8.1。dlib版本為目前的最新版
19.19。
注意了:dlib從19.9版本開始不再需要提前安裝boost了,是以别問我為啥不要裝boost。 先分享一下我編譯好的dlib的.whl檔案,提取碼:i81xdlib.whlpan.baidu.com
注意事項
- 路徑不要有中文和空格
- 記得編譯前先删除build檔案夾
ubuntu安裝dlib的python版本
ubuntu安裝python版本的dlib很簡單,直接pip安裝即可
pip install dlib
如果提示缺少什麼包的話,直接先安裝缺少的包再繼續pip安裝即可,一般沒什麼問題。
windows編譯安裝
python3.7如果直接使用pip安裝:
pip install dlib
會報錯如下:
在網上查了很多解決辦法,發現他們的解決辦法要麼是安裝visual studio讓visual studio來成為預設編譯器,要麼是去https://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml下載下傳别人已經編譯好的版本來安裝。但是不巧我當時去看别人編譯好的版本時并沒有Python.7的版本,然後大家都是把Python版本退回到3.6或3.5。
這些個解決辦法太笨了!!!我就是要用minGW來編譯我的python3.7版本!! 安裝minGW。 安裝cmake。minGW和cmake的安裝可以參考我的另一篇文章
:小糊糊:Win10+Clion+OpenCV+編譯源碼zhuanlan.zhihu.com
去github上下載下傳最新版的dlib:https://github.com/davisking/dlib,我下載下傳的是目前最新版dlib19.19。下載下傳完成後解壓縮:
這個時候打開setup.py檔案查找問題,結合上面圖檔中的報錯
,發現問題代碼出現在149行:
目前作業系統為windows時,cmake預設是使用Visual Studio作為C/C++編譯器,而我們使用的是minGW的gcc和g++,minGW是沒有'-A', 'X64'這些參數的,而且mingw的多線程編譯應該是'-j'才對。是以将其修改如下,注釋掉'-A', 'X64',改為4線程編譯。if
另外NMake Makefile是visual studio的生成器,我們使用的是mingw,是以我們應該使用mingw的生成器。 删除目前目錄下的build檔案夾(否則會使用前面的錯誤編譯緩存), 在目前dlib目錄打開cmd,輸入以下指令運作python版本dlib編譯安裝:其中
-G "MinGW Makefiles"表示使用mingw的生成器,
bdist_wheel表示編譯生成.whl檔案。python setup.py -G "MinGW Makefiles" bdist_wheel
dlib開始順利編譯安裝:
編譯過程會自動檢查你的計算機是否有CUDA和顯示卡,然後會自動選擇是否安裝CUDA版本的dlib,注意在windows平台上的mingw編譯器是不支援CUDA的,是以即使你有顯示卡和CUDA它也不會安裝CUDA版本的dlib,目前windows平台上隻有visual studio是支援CUDA的。等待大概10分鐘編譯完成:
這時在我們的目前目錄下多生成了三個檔案夾:
其中dist檔案夾中就是我們非常熟悉的
dlib-19.19.99-cp37-cp37m-win_amd64.whl檔案了
目前目錄打開cmd,輸入以下指令安裝:
pip install dlib-19.19.99-cp37-cp37m-win_amd64.whl
測試安裝:
成功導入了dlib包!!