Frage

Ich bin mit der Macports Version von Python auf einem Computer Snow Leopard, und mit cmake einer plattformübergreifende Erweiterung, um es zu bauen. Ich suche die Python-Interpreter und Bibliotheken auf dem System mit den folgenden Befehlen in CMakeLists.txt

include(FindPythonInterp)
include(FindPythonLibs  )

Während jedoch Cmake die richtigen Dolmetscher in /opt/local/bin identifiziert, versucht es zu Link gegen den falschen Rahmen - nämlich das System Python-Framework.

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

Und dies bewirkt, dass die folgenden Laufzeitfehler

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

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

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

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

, anstatt das System eine in

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

War es hilfreich?

Lösung

Wenn Sie folgende in ~/.bash_profile

export DYLD_FRAMEWORK_PATH=/opt/local/Library/Frameworks

behebt das Problem zumindest vorübergehend. Offenbar diese Inkonsistenz zwischen dem Python-Interpreter und dem Python-Framework von cmake verwendet wird, ist ein Fehler, der hoffentlich sollte in der neuen Version behoben werden.

Andere Tipps

Ich bin nicht vertraut mit CMake, aber mit der Apple-Version von gcc / ld, können Sie die -F Flagge passieren einen neuen Rahmen Suchpfad angeben. Zum Beispiel -F/opt/local/Library/Frameworks wird in MacPorts' Frameworks Verzeichnis suchen. Wenn Sie eine solche Fahne mit CMake angeben können, kann es Ihr Problem lösen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top