前言
前段時間的一篇《40行代碼的人臉識別實踐》用到了Dlib庫的python接口。有感興趣的小夥伴想要嘗試的時候卻發現Dlib安裝難以成功。其實我安裝的時候也是歷經的千辛萬苦。總會遇到下面的錯誤。
我寫那一篇文章的時候用的是一臺編譯了boost.python的電腦。而且其他的依賴也都比較完善,所以可以直接用pip install dlib
輕易安裝成功。後來換到自己的剛重裝系統的筆記本的時候才發現重新裝的話不簡單,於是於是在後面加了一句提醒:如果用pip安裝失敗,安裝起來將會很麻煩。
最近經過多方嘗試,解決了安裝dlib的問題。記錄下來,免得自己忘記,也可以讓大家作爲參考。
需要先裝的
- Python2(3的話我遇到了編碼問題)
- Visual Studio
- CMake
一般前兩個都有,後一個可能需要自己去官網下載一個。三個都需要添加到環境變量中去。這種事情就不多說了,配置過opencv的應該都知道怎麼做。
編譯boost.python
一般安裝dlib的時候最容易出錯的就是找不到boost。爲了讓dlib找到boost,我們需要編譯boost.python。
其實安裝dlib失敗時候的報錯信息給出了詳細的指引,按照指引去做一般來說沒有問題。
我這裏遇到的問題是最新版的boost不能編譯python。其他模塊可以編譯就是Python模塊不可以。
我做的嘗試如下:
- 在本來就安裝了Anaconda2和Anaconda3的基礎上,又去安裝了Python2,不確定是不是這裏也起到了作用。
- 不再用最新版的boost,而是用倒數第三個或者第四個穩定版本。
由於這裏只需要用到Boost.python,所以我只編譯了python模塊。過程如下:
- 去官網下載不是最新版,而是穩定版本的boost。
- 運行
bootstrap.bat
,會生成我們需要的b2.exe和bjam.exe。- 運行如下命令
b2 -a --with-python address-model=64 toolset=msvc runtime-link=static
這一過程可能會耗費幾分鐘時間,請耐心等待。編譯成功之後會生成兩個文件夾bin.v2和stage。
stage/lib文件夾下會生成類似下面這樣的文件,我用最新版本的boost一直不能生成這倆文件:
而且會提示兩個路徑需要添加:
現在回頭看一下上面第一張圖的提示信息:
然後就可以知道我們需要添加兩個環境變量。
由於我嘗試了不同的版本,我實際添加的版本可能和寫這篇文章的時候演示的不是同一個版本的boost。但是相信應該說明白我的意思了。
安裝Dlib
然後再去安裝Dlib文件夾下運行安裝命令:
python setup.py install
這次就不會出現找不到boost的錯誤了。一般也不會出現其他錯誤了。
如果還有這個錯誤,而且確認上都沒做錯的話,可以重啓試試。
公衆號CVPy,分享OpenCV和Python的實戰內容。每一篇都會放出完整的代碼。歡迎關注。