Я пытаюсь запустить скрипт Python в C++-программе, используя Python.h
. Поскольку эта программа C++ может быть установлена (make install
) в /usr/bin
, она должна иметь возможность находить скрипт Python как в своем собственном каталоге (если он не был установлен), либо в одном из каталогов переменной среды PATH.Импорт скриптов Python из PATH в C++
Я пробовал делать:
PyObject *pName = PyString_FromString(scriptName); // scriptName is "file.py" as a char*
PyRun_SimpleString("import sys");
PyRun_SimpleString("sys.path.append(\".\")");
PyObject *pModule = PyImport_Import(name); // not working because absolute path only
//since Python 2.7 ?
и
PyRun_SimpleString("import sys");
PyRun_SimpleString("sys.path.append(\".\")");
PyObject *pModule = PyImport_ImportModuleEx(scriptName, NULL, NULL, NULL);
Но и оставить меня с pModule == NULL
после этого вызова, но работать, если я запустить модуль C++ из своей директории.
Большое спасибо за вашу помощь
Немного вопросов: 1) Будет ли приложение запускаться из каталога, содержащего скрипт python? 2) Пробовали ли вы вызов PySys_SetArgvEx перед Py_Initialize и настройку пути приложения? –
1) Абсолютно, 'make' помещает исполняемый файл C++ в тот же каталог, где находится скрипт Python. 'make install' копирует как исполняемый файл C++, так и скрипт Python в' usr/bin' (или там, где пользователь хочет их установить). 2) У меня нет, в основном потому, что эта часть программы на C++ довольно далека от «main» и, следовательно, исходных переменных «argc» и «argv». Нужно ли мне это делать, чтобы установить путь к приложению? – wrousseau