2013-03-08 6 views

risposta

17

Prova ad aggiungere -DPYTHON_EXECUTABLE:FILEPATH=/path/to/python2.7 Potrebbe essere un problema di percorso?

potrebbe anche specificare il percorso alla libreria python, utilizzare la versione che si desidera:

cmake -DPYTHON_LIBRARIES=/Library/Frameworks/Python.framework/Versions/2.7/lib/libpython2.7.dylib . 
+0

Si noti che almeno per cmake 2.8 su Ubuntu 16.04, devi impostare -DPYTHON_LIBRARY invece di -DPYTHON_LIBRARIES – phiresky

16

ho avuto un problema simile, e si sono risolti utilizzando Paul's answer come un suggerimento. Avevo bisogno di usare python2.7 per compilare una vecchia libreria, ma cmake continua a raccogliere le mie librerie (ed eseguibili) python3.2.

Innanzitutto, ho eseguito cmake con le opzioni predefinite, quindi ho modificato il file CMakeCache.txt da esso generato. L'ho fatto in questo modo principalmente perché non conoscevo gli incantesimi -D... appropriati per causare cmake per ottenere la libreria python e includere i percorsi, ecc in primo luogo.

Nel mio CmakeCache.txt, ho trovato le linee come questo

  • percorso di un programma di

    PYTHON_EXECUTABLE:FILEPATH=/usr/bin/python 
    
  • percorso di una directory

    PYTHON_INCLUDE_DIR:PATH=/usr/include/python3.2 
    
  • percorso per una libreria

    PYTHON_LIBRARY:FILEPATH=/usr/lib/libpython3.2.so 
    

e sostituiti ogni occorrenza di python3.2 con python2.7. Ho anche dovuto rinominare lo PYTHON_EXECUTABLE per utilizzare python2.7, poiché python è un collegamento simbolico a python3.2 sul mio sistema.

Quindi riebro cmake. Poiché preferisce i suoi valori memorizzati nella cache per cercare effettivamente le librerie, questo dovrebbe funzionare in tutti i casi. Almeno, lo ha fatto nel mio.

+0

Questo è ciò che ha funzionato per me. Fornire variabili di ambiente cmake non ha funzionato. Modifica del file CmakeCache. È più facile lavorare con comunque – JohnAllen

19

Puoi provare uno di questi a seconda di quello che vi serve:

find_package(PythonInterp 2.7 REQUIRED) 
find_package(PythonLibs 2.7 REQUIRED) 

See: CMake docs

+0

Funziona bene, anche usando Travis. –

+0

Così facile ... mi sento stupido. – dividebyzero

+3

https://cmake.org/cmake/help/latest/module/FindPythonInterp.html consiglia di scambiare le righe – sercxjo

3

uso anaconda (Python 2.7.8), così come pitone 2.7.6.

Ho provato -DPYTHON_EXECUTABLE:FILEPATH=$ANACONDA_HOME/bin, ma trovato versione 1.4 (strano :).

La mia soluzione sta cambiando a PYTHON_EXECUTABLE:

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -DBUILD_TIFF=ON \ 
-DPYTHON_LIBRARY=$ANACONDA_HOME/lib/libpython2.7.so \ 
-DPYTHON_INCLUDE_DIR=$ANACONDA_HOME/include/python2.7/ \ 
-DPYTHON_EXECUTABLE=$ANACONDA_HOME/bin/python 
+0

Per anaconda in particolare, questo ha funzionato per me (e si spera si generalizzi più facilmente): https://github.com/jkhoogland/FindPythonAnaconda (anche se ho dovuto fare due piccoli cambiamenti - sono entrambi nella mia forcella GitHub se upstream non funziona nemmeno per te) –

Problemi correlati