2009-11-11 7 views
7

Ich verwende die Macports-Version von Python auf einem Snow Leopard-Computer und verwende cmake, um eine plattformübergreifende Erweiterung zu erstellen. Ich suche die Python-Interpreter und Bibliotheken auf dem System mit den folgenden Befehlen in CMakeLists.txtDas richtige Python-Framework mit cmake finden

include(FindPythonInterp) 
include(FindPythonLibs ) 

Doch während Cmake die richtigen Dolmetscher in /opt/local/bin identifiziert, versucht er, gegen den falschen Rahmen zu verbinden - nämlich das System Python Rahmen.

-- Found PythonInterp: /opt/local/bin/python2.6 
-- Found PythonLibs: -framework Python 

Und dies verursacht den folgenden Laufzeitfehler

Fatal Python error: Interpreter not initialized (version mismatch?) 

Sobald ich -framework Python mit /opt/local/Library/Frameworks/Python.framework/Python Dinge ersetzen scheinen wie erwartet zu funktionieren.

Wie kann ich Cmake Link gegen den richtigen Python-Framework in

/opt/local/Library/Frameworks/Python.framework/Python 

anstatt das System einer in

/System/Library/Frameworks/Python.framework/Python 

gefunden machen?

Antwort

5

die folgende in ~/.bash_profile

export DYLD_FRAMEWORK_PATH=/opt/local/Library/Frameworks 

behebt das Problem zumindest vorübergehend Hinzufügen. Offensichtlich ist diese Inkonsistenz zwischen dem Python-Interpreter und dem von cmake verwendeten Python-Framework ein Bug, der hoffentlich in der neuen Version behoben werden sollte.

1

Ich bin nicht vertraut mit CMake, aber mit der Apple-Version von gcc/ld können Sie das -F Flag übergeben, um einen neuen Framework-Suchpfad anzugeben. Zum Beispiel wird -F/opt/local/Library/Frameworks im Frameworks-Verzeichnis von MacPorts suchen. Wenn Sie ein solches Flag mit CMake angeben können, kann es Ihr Problem lösen.