我在Snow Leopard计算机上使用macports版本的python,并使用cmake为它构建跨平台扩展。我使用CMakeLists.txt
中的以下命令在系统上搜索python解释器和库include(FindPythonInterp)
include(FindPythonLibs )
然而,虽然cmake在/opt/local/bin
中确定了正确的解释器,但它试图链接错误的框架 - 即系统Python框架。
-- Found PythonInterp: /opt/local/bin/python2.6
-- Found PythonLibs: -framework Python
这会导致以下运行时错误
Fatal Python error: Interpreter not initialized (version mismatch?)
只要将-framework Python
替换为/opt/local/Library/Frameworks/Python.framework/Python
,事情就会按预期发挥作用。
如何针对
中找到的正确Python框架进行cmake链接/opt/local/Library/Frameworks/Python.framework/Python
而不是
中的系统/System/Library/Frameworks/Python.framework/Python
答案 0 :(得分:5)
在~/.bash_profile
export DYLD_FRAMEWORK_PATH=/opt/local/Library/Frameworks
至少暂时解决问题。显然,python解释器和cmake使用的python框架之间的这种不一致是一个有希望在新版本中修复的错误。
答案 1 :(得分:1)
我对CMake并不熟悉,但使用Apple版本的gcc / ld,您可以传递-F
标志来指定新的框架搜索路径。例如,-F/opt/local/Library/Frameworks
将在MacPorts的frameworks目录中进行搜索。如果你可以使用CMake指定这样的标志,它可以解决你的问题。