cmake находит неправильные библиотеки python

Я новичок в CMake, и у меня проблемы с пониманием некоторых концепций использования.

Я вызываю скрипт python из программы на C ++:

#include 
...
Py_Initialize();
PyRun_SimpleFile(...);
Py_Finalize();

Соответствующие записи cmake в моем cmake следующие файлы:

FIND_PACKAGE(PythonLibs REQUIRED)
...
TARGET_LINK_LIBRARIES(MyApplication ${PYTHON_LIBRARIES})

Это работает, пока мой скрипт python не использует какие-либо модули, установленные в каталог site-packages, в противном случае я получаю ошибку ImportError. Этот вопрос показывает, как найти расположение site-packages с CMake, но что мне сказать CMake, что с ним делать?

РЕДАКТИРОВАТЬ: Проблема решена. Оказывается, FIND_PACKAGE (PythonLibs) находит установку Python, отличную от той, которую я обычно использую (/ usr / local / lib / libpython2.7.dylib вместо /Library/Frameworks/Python.framework/Versions/2.7/lib/libpython2.7.dylib - я на Mac), так я получаю стандартные модули Python, но ни один из них установил сам. Чтобы поменять PYTHONPATH обратно на норму l, я добавил

try:
  import some_package
except ImportError:
  if "my_python_path" in sys.path: raise
  sys.path.append("my_python_path")

в начало моего скрипта python.

17
задан Community 23 May 2017 в 11:47
поделиться