2016-11-21 141 views
1

我是一個Windows用戶,目前正在使用Windows 10.我試圖在過去8小時的python 3.5上安裝Dlib,但是失敗了。每當我嘗試「點安裝Dlib」,或嘗試「python setup.py install」(在dlib文件夾中),我會收到錯誤消息,說「cmake配置失敗」。在整個執行過程中,我可以看到「無法找到BOOST」。有人可以在這裏指導我嗎?安裝Dlib時無法找到Boost

>>python setup.py install 
running install 
running bdist_egg 
running build 
Detected Python architecture: 32bit 
Detected platform: win32 
Removing build directory C:\Users\Tabish\Desktop\dlib-master\./tools/python/build 
Configuring cmake ... 
-- Building for: Visual Studio 14 2015 
-- The C compiler identification is MSVC 19.0.24213.1 
-- The CXX compiler identification is MSVC 19.0.24213.1 
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/cl.exe 
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/cl.exe -- works 
-- Detecting C compiler ABI info 
-- Detecting C compiler ABI info - done 
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/cl.exe 
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/cl.exe -- works 
-- Detecting CXX compiler ABI info 
-- Detecting CXX compiler ABI info - done 
-- Detecting CXX compile features 
-- Detecting CXX compile features - done 
CMake Warning at C:/Program Files (x86)/Python35-32/Lib/site-packages/cmake/data/share/cmake-3.7/Modules/FindBoost.cmake:744 (message): 
    Imported targets not available for Boost version 
Call Stack (most recent call first): 
    C:/Program Files (x86)/Python35-32/Lib/site-packages/cmake/data/share/cmake-3.7/Modules/FindBoost.cmake:848 (_Boost_COMPONENT_DEPENDENCIES) 
    C:/Program Files (x86)/Python35-32/Lib/site-packages/cmake/data/share/cmake-3.7/Modules/FindBoost.cmake:1435 (_Boost_MISSING_DEPENDENCIES) 
    C:/Users/Tabish/Desktop/dlib-master/dlib/cmake_utils/add_python_module:61 (FIND_PACKAGE) 
    CMakeLists.txt:6 (include) 
CMake Warning at C:/Program Files (x86)/Python35-32/Lib/site-packages/cmake/data/share/cmake-3.7/Modules/FindBoost.cmake:1499 (message): 
    No header defined for python-py34; skipping header check 
Call Stack (most recent call first): 
    C:/Users/Tabish/Desktop/dlib-master/dlib/cmake_utils/add_python_module:61 (FIND_PACKAGE) 
    CMakeLists.txt:6 (include) 
-- Could NOT find Boost 
CMake Warning at C:/Program Files (x86)/Python35-32/Lib/site-packages/cmake/data/share/cmake-3.7/Modules/FindBoost.cmake:744 (message): 
    Imported targets not available for Boost version 
Call Stack (most recent call first): 
    C:/Program Files (x86)/Python35-32/Lib/site-packages/cmake/data/share/cmake-3.7/Modules/FindBoost.cmake:848 (_Boost_COMPONENT_DEPENDENCIES) 
    C:/Program Files (x86)/Python35-32/Lib/site-packages/cmake/data/share/cmake-3.7/Modules/FindBoost.cmake:1435 (_Boost_MISSING_DEPENDENCIES) 
    C:/Users/Tabish/Desktop/dlib-master/dlib/cmake_utils/add_python_module:63 (FIND_PACKAGE) 
    CMakeLists.txt:6 (include) 
CMake Warning at C:/Program Files (x86)/Python35-32/Lib/site-packages/cmake/data/share/cmake-3.7/Modules/FindBoost.cmake:1499 (message): 
    No header defined for python-py35; skipping header check 
Call Stack (most recent call first): 
    C:/Users/Tabish/Desktop/dlib-master/dlib/cmake_utils/add_python_module:63 (FIND_PACKAGE) 
    CMakeLists.txt:6 (include) 
-- Could NOT find Boost 
CMake Warning at C:/Program Files (x86)/Python35-32/Lib/site-packages/cmake/data/share/cmake-3.7/Modules/FindBoost.cmake:744 (message): 
    Imported targets not available for Boost version 
Call Stack (most recent call first): 
    C:/Program Files (x86)/Python35-32/Lib/site-packages/cmake/data/share/cmake-3.7/Modules/FindBoost.cmake:848 (_Boost_COMPONENT_DEPENDENCIES) 
    C:/Program Files (x86)/Python35-32/Lib/site-packages/cmake/data/share/cmake-3.7/Modules/FindBoost.cmake:1435 (_Boost_MISSING_DEPENDENCIES) 
    C:/Users/Tabish/Desktop/dlib-master/dlib/cmake_utils/add_python_module:66 (FIND_PACKAGE) 
    CMakeLists.txt:6 (include) 
CMake Warning at C:/Program Files (x86)/Python35-32/Lib/site-packages/cmake/data/share/cmake-3.7/Modules/FindBoost.cmake:1499 (message): 
    No header defined for python3; skipping header check 
Call Stack (most recent call first): 
    C:/Users/Tabish/Desktop/dlib-master/dlib/cmake_utils/add_python_module:66 (FIND_PACKAGE) 
    CMakeLists.txt:6 (include) 
-- Could NOT find Boost 
CMake Warning at C:/Program Files (x86)/Python35-32/Lib/site-packages/cmake/data/share/cmake-3.7/Modules/FindBoost.cmake:744 (message): 
    Imported targets not available for Boost version 
Call Stack (most recent call first): 
    C:/Program Files (x86)/Python35-32/Lib/site-packages/cmake/data/share/cmake-3.7/Modules/FindBoost.cmake:848 (_Boost_COMPONENT_DEPENDENCIES) 
    C:/Program Files (x86)/Python35-32/Lib/site-packages/cmake/data/share/cmake-3.7/Modules/FindBoost.cmake:1435 (_Boost_MISSING_DEPENDENCIES) 
    C:/Users/Tabish/Desktop/dlib-master/dlib/cmake_utils/add_python_module:69 (FIND_PACKAGE) 
    CMakeLists.txt:6 (include) 
-- Could NOT find Boost 
-- Found PythonLibs: C:/Program Files (x86)/Python35-32/libs/python35.lib (found suitable version "3.5.2", minimum required is "3.4") 
-- ***************************************************************************************************** 
-- We couldn't find the right version of boost python. If you installed boost and you are still getting this error then you might have installed a version of boost that was compiled with a different version of visual studio than the one you are using. So you have to make sure that the version of visual studio is the same version that was used to compile the copy of boost you are using. 
-- Set the BOOST_ROOT and BOOST_LIBRARYDIR environment variables before running cmake. 
-- E.g. Something like this: 
--  set BOOST_ROOT=C:\local\boost_1_57_0 
--  set BOOST_LIBRARYDIR=C:\local\boost_1_57_0\stage\lib 
-- 
-- You will also likely need to compile boost yourself rather than using one of the precompiled 
-- windows binaries. Do this by going to the folder tools\build\ within boost and running 
-- bootstrap.bat. Then run the command: 
--  b2 install 
-- And then add the output bin folder to your PATH. Usually this is the C:\boost-build-engine\bin 
-- folder. Finally, go to the boost root and run a command like this: 
--  b2 -a --with-python address-model=64 toolset=msvc runtime-link=static 
-- When it completes, set BOOST_LIBRARYDIR equal to wherever b2 put the compiled libraries. 
-- Note that you will need to set the address-model based on if you want a 32 or 64bit python library. 
-- 
-- Next, when you invoke cmake to compile dlib you may have to use cmake's -G option to set the 
-- 64 vs. 32bit mode of visual studio. Also, if you want a Python3 library you will need to 
error: cmake configuration failed! 
+0

如果你使用64位版本的python,你可以通過pip install dlib使用預編譯的二進制文件。 –

+0

不,我使用32位版本@Davis –

回答

6

嘗試以下步驟:(調整適用於Windows)

  1. 下載升壓源碼包。

  2. cd爲抽出升壓文件夾

  3. 運行.\bootstrap.bat

  4. 運行.\b2 runtime-link=shared link=shared。 (這將創建一個被自己鏈接到動態運行時庫動態升壓庫

  5. 設置以下環境變量(它們調整到自己的道路路徑)後:

    BOOST_LIBRARYDIR="C:\Developer\boost_1_62_0\stage\lib" 
    

    BOOST_INCLUDEDIR="C:\Developer\boost_1_62_0" 
    

    BOOST_ROOT="C:\Developer\boost_1_62_0" 
    
  6. 重試與python setup.py install

我有一個類似的問題時的CMake的find_package()找不到提振,原因是建設升壓只有b2,沒有參數link=shared導致產生.lib文件有一個前綴在Windows「LIB」而CMake的find_package()並不認爲這些庫有「lib」前綴。

+0

另一個消息來源告訴我使用'bjam'。 'b2'和'bjam'有什麼區別? – Gensoukyou1337

+0

以下是b2和bjam之間的區別:http://www.boost.org/build/doc/html/bbv2/faq/names.html – Anass

+0

直到我安裝VS2015之前,我沒有成功通過'python setup.py install' **更新3 **(似乎只有這個更新包含一些dlib要求的最新C++標準)。 –