如何从Qt C++项目运行Python函数

How to run a Python function from a Qt C++ project?

本文关键字:运行 Python 函数 项目 C++ Qt      更新时间:2023-10-16

我遵循了一些教程和建议,我什至使用PyRun_SimpleString运行了一个函数而没有问题。我有一个名为 tomograph.py 的文件,其中包含我要执行的makeFiles(path,alpha,n,l)函数,以及我设法运行的my_fun(x)函数(如前所述(。

这就是我在Qt C++项目中所做的

Py_Initialize();
PyObject* moduleString = PyString_FromString((char*)"tomograph");
PyObject* module = PyImport_Import(moduleString);
PyObject* function = PyObject_GetAttrString(module,(char*)"makeFiles");
PyObject* args = PyTuple_Pack(4,filename,alpha,n,l);
//PyRun_SimpleString("my_fun(5)");
PyObject* myResult = PyObject_CallObject(function,args);
Py_Finalize();

当我运行此代码时,我得到一个分段错误

PyObject* function = PyObject_GetAttrString(module,(char*)"makeFiles");

我做错了什么?

PYTHONPATH设置为工作目录并将.py文件放在构建文件夹中应该可以解决问题:

setenv("PYTHONPATH",".",1);
Py_Initialize();