Das Finden der richtigen Python-Framework mit cmake
-
19-09-2019 - |
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
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.