2016-05-06 9 views
3

Ich habe versucht, opencv für python3 zu bauen. Allerdings setzt Cmake immer Python Build-Option werden python2.7.11 auch nachdem ich manuell festgelegt sind und lib Option für python3:wie opencv für python3 zu erstellen, wenn sowohl python2 als auch python3 installiert sind

-- Python 2: 
    -- Interpreter:     /home/ryu/anaconda2/bin/python2.7 (ver 2.7.11) 

    -- Python 3: 
    --  Interpreter:     /usr/bin/python3 (ver 3.4.3) 
    --  Libraries:     /usr/lib/x86_64-linux-gnu/libpython3.4m (ver 3.4.3) 
    --  numpy:      /home/ryu/.local/lib/python3.4/site-packages/numpy/core/include (ver 1.11.0) 

    -- packages path:    lib/python3.4/dist-packages 

-- 
-- **Python (for build):   /home/ryu/anaconda2/bin/python2.7** 

Habe ich vermisse einige Cmake Option?

OS: Ubuntu 14,04

dank

+0

Die Optionen, die ich verwendet werden, bauen und installieren: cmake -D CMAKE_BUILD_TYPE = RELEASE -D CMAKE_INSTALL_PREFIX =/usr/lokal -D INSTALL_PYTHON_EXAMPLES = ON -D PYTHON3_EXECUTABLE =/usr/bin/python3 -D PYTHON_INCLUDE_DIR =/usr/include/python3.4m -D PYTHON_INCLUDE_DIR2 =/usr/include/x86_64-linux-gnu/python3.4m -DP YTHON_LIBRARY =/usr/lib/x86_64-linux-gnu/libpython3.4m -D PYTHON3_NUMPY_INCLUDE_DIRS =/home/ryu/.lokale/lib/python3.4/site-packages/numpy/core/include ../opencv-3.1. 0 –

+0

Ich habe python2.7 irgendwann in einen anderen Namen umbenannt und cmake konnte python2.7 nicht mehr finden.Es hat endlich Makefile für Python3 generiert und alles ist gut gelaufen –

Antwort

11

Sie können das Python-Executable überschreiben, um zu bauen, indem das Argument PYTHON_DEFAULT_EXECUTABLE mit dem Python ausführbaren Anhänge URI während der cmake Invokation.

cmake {...} -DPYTHON_DEFAULT_EXECUTABLE=$(which python3) .. 
+0

Vielen Dank, du hast mir Stunden gerettet! –

1

Ich habe versucht, opencv auf Pi3 und diese Lösung für mich als Python funktionierte nicht installieren (zum Einbau) wurde zu python2.7 immer gesetzt, aber ich fand, dass durch die Reihenfolge der ein Wechsel Die Anweisung elseif am Ende von 'OpenCVDetectPython.cmake' behob das Problem. Für mich befindet sich diese Datei unter '~/opencv-3.3.1/cmake'.

Das ursprüngliche Code-Segment:

if(PYTHON_DEFAULT_EXECUTABLE) 
    set(PYTHON_DEFAULT_AVAILABLE "TRUE") 
elseif(PYTHON2INTERP_FOUND) # Use Python 2 as default Python interpreter 
    set(PYTHON_DEFAULT_AVAILABLE "TRUE") 
    set(PYTHON_DEFAULT_EXECUTABLE "${PYTHON2_EXECUTABLE}") 
elseif(PYTHON3INTERP_FOUND) # Use Python 3 as fallback Python interpreter (if there is no Python 2) 
    set(PYTHON_DEFAULT_AVAILABLE "TRUE") 
    set(PYTHON_DEFAULT_EXECUTABLE "${PYTHON3_EXECUTABLE}") 
endif() 

Mein neugeordneten Codesegment:

if(PYTHON_DEFAULT_EXECUTABLE) 
    set(PYTHON_DEFAULT_AVAILABLE "TRUE") 
elseif(PYTHON3INTERP_FOUND) # Use Python 3 as fallback Python interpreter (if there is no Python 2) 
    set(PYTHON_DEFAULT_AVAILABLE "TRUE") 
    set(PYTHON_DEFAULT_EXECUTABLE "${PYTHON3_EXECUTABLE}") 
elseif(PYTHON2INTERP_FOUND) # Use Python 2 as default Python interpreter 
    set(PYTHON_DEFAULT_AVAILABLE "TRUE") 
    set(PYTHON_DEFAULT_EXECUTABLE "${PYTHON2_EXECUTABLE}") 
endif() 

Ich weiß nicht, die Gründe für sie, aber Cmake gesetzt ist auf dem Standard wenn python2 python2 exists, wenn die Reihenfolge dieser elseif-Anweisungen geändert wird, wird sie auf den Standardwert python3 umgestellt, wenn sie existiert

** Haftungsausschluss **

  1. ich das Drehbuch bei https://gist.github.com/willprice/c216fcbeba8d14ad1138 gefunden wurde mit zum Herunterladen, Installieren und bauen alles (Skript nicht eine virtuelle Umgebung schaffen geändert wurde, da ich nicht ein und wollte mit j1 nicht j4, wie es beim Betrieb mit mehreren Kernen um 85% fehlgeschlagen).
  2. Ich glaube nicht, dass die relevante Datei existiert, bis Sie einen Build versucht haben.
0

Ändern der Optionen in cmake hat nichts für mich getan, egal welche Optionen ich geändert habe. Die simpliest (hacky) Lösung für mich war zu

sudo mv /usr/bin/python2.7 /usr/bin/pythonNO-temp

Dazu opencv

dann

sudo mv /usr/bin/pythonNO-temp /usr/bin/python2.7

Verwandte Themen