Pregunta

Estoy utilizando la versión macports de pitón en un ordenador Snow Leopard, y el uso de cmake para construir una extensión de plataforma cruzada a la misma. Busco el intérprete de Python y bibliotecas en el sistema usando los siguientes comandos en CMakeLists.txt

include(FindPythonInterp)
include(FindPythonLibs  )

Sin embargo, mientras que cmake identificó el intérprete correcto en /opt/local/bin, trata de enlazar con el marco equivocado - es decir, el marco de Python sistema.

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

Y esto hace que el siguiente error de ejecución

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

Tan pronto como sustituyo -framework Python con cosas /opt/local/Library/Frameworks/Python.framework/Python parecen funcionar como se espera.

¿Cómo puedo crear un enlace cmake contra el marco de Python correcta que se encuentra en

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

lugar del sistema de una en

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

¿Fue útil?

Solución

Adición de la siguiente en ~/.bash_profile

export DYLD_FRAMEWORK_PATH=/opt/local/Library/Frameworks

corrige el problema, al menos temporalmente. Al parecer, esta falta de coherencia entre el intérprete de Python y el marco pitón utilizado por CMake es un error que se debe esperar fijo en la nueva versión.

Otros consejos

No estoy muy familiarizado con CMake, pero con la versión de Apple de gcc / ld, se puede pasar la bandera -F para especificar una nueva ruta de búsqueda de marco. Por ejemplo, -F/opt/local/Library/Frameworks buscará en el directorio marcos DarwinPorts. Si se puede especificar una bandera tales usando CMake, puede resolver su problema.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top