Найти правильный Python-фреймворк с помощью cmake - PullRequest
7 голосов
/ 12 ноября 2009

Я использую версию python для macports на компьютере Snow Leopard и использую cmake для создания кроссплатформенного расширения для него. Я ищу интерпретатор Python и библиотеки в системе, используя следующие команды в CMakeLists.txt

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, все кажется работающим, как и ожидалось.

Как я могу сделать ссылку cmake на правильную структуру Python, найденную в

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

, а не системный в

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

Ответы [ 2 ]

5 голосов
/ 13 ноября 2009

Добавление следующего в ~/.bash_profile

export DYLD_FRAMEWORK_PATH=/opt/local/Library/Frameworks

исправляет проблему хотя бы временно. По-видимому, это несоответствие между интерпретатором python и каркасом python, используемым cmake, является ошибкой, которую, надеюсь, следует исправить в новой версии.

1 голос
/ 12 ноября 2009

Я не очень хорошо знаком с CMake, но с версией Apple gcc / ld вы можете передать флаг -F, чтобы указать новый путь поиска в рамках. Например, -F/opt/local/Library/Frameworks будет искать в каталоге каркасов MacPorts. Если вы можете указать такой флаг с помощью CMake, это может решить вашу проблему.

...