2013-03-08 13 views

Odpowiedz

17

Spróbuj dodać -DPYTHON_EXECUTABLE:FILEPATH=/path/to/python2.7 Może to być problem ze ścieżką?

także mogli określić ścieżkę do biblioteki Pythona, użyj wersję, że chcesz:

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

Zauważ, że przynajmniej dla cmake 2.8 na Ubuntu 16.04, musisz ustawić -DPTYTHON_LIBRARY zamiast -DPYTHON_LIBRARIES – phiresky

16

miałem podobny problem i rozwiązać go za pomocą Paul's answer jako podpowiedź. Musiałem użyć python2.7, aby skompilować starszą bibliotekę, ale cmake ciągle zbiera moje biblioteki python3.2 (i wykonywalne).

Najpierw uruchomiłem cmake z opcjami domyślnymi, a następnie edytowałem wygenerowany plik CMakeCache.txt. Zrobiłem to w ten sposób przede wszystkim dlatego, że nie znałem odpowiednich zaklęć, aby spowodować, że cmake otrzymam bibliotekę Pythona i dołączam ścieżki, itd. W pierwszej kolejności.

W moim CmakeCache.txt znalazłem linie jak ten

  • Ścieżka do programu

    PYTHON_EXECUTABLE:FILEPATH=/usr/bin/python 
    
  • ścieżkę do katalogu

    PYTHON_INCLUDE_DIR:PATH=/usr/include/python3.2 
    
  • ścieżkę do biblioteki

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

i zastąpić wszystkie wystąpienia python3.2 z python2.7. Musiałem również zmienić nazwę PYTHON_EXECUTABLE, aby użyć python2.7, ponieważ python jest dowiązaniem symbolicznym do python3.2 w moim systemie.

Następnie ponownie wysłałem cmake. Ponieważ preferuje buforowane wartości do szukania bibliotek, powinno to działać we wszystkich przypadkach. Przynajmniej w moim.

+0

To właśnie dla mnie zadziałało. Zapewnienie zmiennych środowiskowych cmake nie działa. Naprawiono edycję pliku CmakeCache. Z każdą godziną łatwiej jest pracować. – JohnAllen

19

Możesz spróbować jednego z nich w zależności od tego, co trzeba:

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

Patrz: CMake docs

+0

Ładnie działa, także za pomocą Travisa. –

+0

Tak łatwo ... Czuję się głupio. – dividebyzero

+3

https://cmake.org/cmake/help/latest/module/FindPythonInterp.html zaleca zamianę linii – sercxjo

3

używam anakonda (python 2.7.8), jak również python 2.7.6.

Próbowałem -DPYTHON_EXECUTABLE:FILEPATH=$ANACONDA_HOME/bin, ale wersja 1.4 została znaleziona (dziwne :).

Moje rozwiązanie zmienia go 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

W szczególności dla Anacondy działało to dla mnie (i mam nadzieję, że łatwiej będzie generalizować): https://github.com/jkhoogland/FindPythonAnaconda (chociaż musiałem wprowadzić dwie małe zmiany - oba są w moim widelcu GitHub, jeśli w górę nie działa również dla ciebie) –

Powiązane problemy