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

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top