Encontrar el marco de Python correcta con cmake
-
19-09-2019 - |
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
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.