2013-03-08 18 views

Antwort

17

Versuchen Sie, -DPYTHON_EXECUTABLE:FILEPATH=/path/to/python2.7 hinzuzufügen Es könnte ein Pfadproblem sein?

Auch könnte den Pfad zu Ihrer Python-Bibliothek festzulegen, verwenden Ihre Version, die Sie mögen:

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

Beachten Sie, dass zumindest für cmake 2.8 auf Ubuntu 16.04, müssen Sie -DPYTHON_LIBRARY anstelle von -DYTHON_LIBRARIES setzen – phiresky

16

Ich hatte ein ähnliches Problem und es gelöst Paul's answer als Hinweis verwenden. Ich musste python2.7 verwenden, um eine ältere Bibliothek zu kompilieren, aber cmake nimmt meine python3.2 Bibliotheken (und ausführbare Datei) ab.

Zuerst lief ich cmake mit Standardoptionen, dann bearbeitet die CMakeCache.txt Datei, die es generiert. Ich tat es auf diese Weise hauptsächlich, weil ich die richtigen -D... Beschwörungen nicht kannte, um cmake zu verursachen, um die Python-Bibliothek zu erhalten und Wege, usw. an erster Stelle einzuschließen.

In meinem CmakeCache.txt fand ich Zeilen wie dieser

  • Pfad zu einem Programm

    PYTHON_EXECUTABLE:FILEPATH=/usr/bin/python 
    
  • Pfad zu einem Verzeichnis

    PYTHON_INCLUDE_DIR:PATH=/usr/include/python3.2 
    
  • Pfad zu einer Bibliothek

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

und ersetzt jedes Vorkommen von python3.2 mit python2.7. Ich musste auch die PYTHON_EXECUTABLE umbenennen, um python2.7 zu verwenden, da python ein Symlink zu python3.2 auf meinem System ist.

Dann reran ich cmake. Da es die zwischengespeicherten Werte bevorzugt, um tatsächlich nach den Bibliotheken zu suchen, sollte dies in allen Fällen funktionieren. Zumindest hat es in meinem getan.

+0

Das ist, was für mich arbeitete. Die Bereitstellung von cmake-Umgebungsvariablen hat nicht funktioniert. Bearbeiten der CmakeCache-Datei hat. Es ist einfacher mit Anyways zu arbeiten – JohnAllen

19

Sie können entweder von diesen je nach versuchen, was Sie brauchen:

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

See: CMake docs

+0

Funktioniert gut, auch mit Travis. –

+0

So einfach ... Ich fühle mich dumm. – dividebyzero

+3

https://cmake.org/cmake/help/latest/module/FindPythonInterp.html empfiehlt, die Zeilen zu tauschen – sercxjo

3

Ich benutze Anakonda (Python 2.7.8) sowie Python 2.7.6.

Ich versuchte -DPYTHON_EXECUTABLE:FILEPATH=$ANACONDA_HOME/bin, aber Version 1.4 gefunden (komisch :).

Meine Lösung ist es PYTHON_EXECUTABLE Wechsel:

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

Für Anaconda im Speziellen funktionierte das für mich (und hoffentlich wird es leichter verallgemeinern): https://github.com/jkhoogland/FindPythonAnaconda (obwohl ich zwei kleine Änderungen vornehmen musste - sie sind beide in meiner GitHub-Fork, wenn Upstream funktioniert auch nicht gut für dich) –

Verwandte Themen