使用cmake查找正确的Python框架

dzh*_*lil 8 python macos frameworks macports cmake

我在Snow Leopard计算机上使用macports版本的python,并使用cmake为它构建跨平台扩展.我使用CMakeLists.txt中的以下命令在系统上搜索python解释器和库

include(FindPythonInterp)
include(FindPythonLibs  )
Run Code Online (Sandbox Code Playgroud)

然而,当cmake识别出正确的解释器时/opt/local/bin,它试图链接错误的框架 - 即系统Python框架.

-- Found PythonInterp: /opt/local/bin/python2.6
-- Found PythonLibs: -framework Python
Run Code Online (Sandbox Code Playgroud)

这会导致以下运行时错误

Fatal Python error: Interpreter not initialized (version mismatch?)
Run Code Online (Sandbox Code Playgroud)

当我更换-framework Python/opt/local/Library/Frameworks/Python.framework/Python的东西似乎按预期方式工作.

如何针对中找到的正确Python框架进行cmake链接

/opt/local/Library/Frameworks/Python.framework/Python
Run Code Online (Sandbox Code Playgroud)

而不是系统中的一个

/System/Library/Frameworks/Python.framework/Python
Run Code Online (Sandbox Code Playgroud)

dzh*_*lil 5

添加以下内容 ~/.bash_profile

export DYLD_FRAMEWORK_PATH=/opt/local/Library/Frameworks
Run Code Online (Sandbox Code Playgroud)

至少暂时解决问题.显然,python解释器和cmake使用的python框架之间的这种不一致是一个有希望在新版本中修复的错误.