Я пытаюсь вызвать функцию в Python под C ++.
Это моя попытка:
void myFuncion()
{
PyObject* fExportar = nullptr;
PyObject* modulo = nullptr;
PyObject* pName = nullptr;
const char *scriptDirectoryName = "path/of/my/pyfile";
Py_Initialize();
PyObject *sysPath = PySys_GetObject("path");
PyObject *path = PyUnicode_FromString(scriptDirectoryName);
int result = PyList_Insert(sysPath, 0, path);
if (result == 0 )//0 if ok, -1 if error
{
pName = PyUnicode_FromString("exportarXLS");//exportarXLS.py
modulo = PyImport_Import(pName);
Py_DECREF(path);
if (modulo)
{
fExportar = PyObject_GetAttrString(modulo, "exportar");//it crahs here
Py_DECREF(modulo);
if (fExportar)
{
//call the function
}
}
}
else
{
PyErr_Print();
}
Py_Finalize();
}
}
Проблема в том, что моя программа на C ++ аварийно завершает работу, если в скрипте python есть ошибки import
.В этом случае я подозреваю, что я пытаюсь использовать неверную версию PyQt4.
Это модуль: ( exportarXLS.py )
#!/usr/bin/python3
from PyQt4 import QtCore, QtGui, QtSql
def exportar():
print ("hello, I am probing")
Теперь мойвопрос:
Теперь я начинаю исследовать шаги по разработке функции для загрузки плагинов Python, и мне интересно, как бы избежать сбоя, если кто-то захочет добавить скрипт с неправильным import
Я пытаюсь заключить проблемную строку в блок try/catch
, но она не работает.
РЕДАКТИРОВАТЬ:
Я забыл сказать, что это происходит только в моем QtПроект Если я попытаюсь запустить свою функцию из этого, я могу получить ошибки при загрузке модулей, но это не приводит к сбою.Я редактировал титул