Trovare framework Python corretta con CMake
-
19-09-2019 - |
Domanda
Sto usando la versione MacPorts di pitone su un computer Snow Leopard, e con CMake per costruire un'estensione cross-platform ad esso. Cerco l'interprete Python e le librerie sul sistema utilizzando i seguenti comandi in CMakeLists.txt
include(FindPythonInterp)
include(FindPythonLibs )
Tuttavia, mentre CMake identificato l'interprete corretto in /opt/local/bin
, cerca di collegare contro il quadro sbagliato - vale a dire il quadro del sistema Python.
-- Found PythonInterp: /opt/local/bin/python2.6
-- Found PythonLibs: -framework Python
E questo fa sì che il seguente errore di runtime
Fatal Python error: Interpreter not initialized (version mismatch?)
Non appena sostituisco -framework Python
con le cose /opt/local/Library/Frameworks/Python.framework/Python
sembrano funzionare come previsto.
Come posso fare collegamento CMake contro framework Python corretta trovato in
/opt/local/Library/Frameworks/Python.framework/Python
piuttosto che il sistema quello in
/System/Library/Frameworks/Python.framework/Python
Soluzione
L'aggiunta la seguente in ~/.bash_profile
export DYLD_FRAMEWORK_PATH=/opt/local/Library/Frameworks
risolve il problema, almeno temporaneamente. A quanto pare, questa incoerenza tra l'interprete Python e il quadro di pitone utilizzata da CMake è un bug che dovrebbe essere auspicabilmente risolto nella nuova versione.
Altri suggerimenti
Non sono intimamente familiare con CMake, ma con la versione di Apple di gcc / ld, è possibile passare il flag -F
per specificare un nuovo percorso di ricerca quadro. Ad esempio, -F/opt/local/Library/Frameworks
cercherà nella directory quadri MacPorts. Se è possibile specificare una bandiera con CMake, può risolvere il problema.