Qt5.14 C++ 调用 Python脚本(ubuntu18.0)

1、使用anaconda安装Python,路径为/usr/local/anaconda3/envs/tf_gpu_env

2、添加环境变量:/etc/profile

export PYTHONPATH=/usr/local/anaconda3/envs/tf_gpu_env 
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/anaconda3/envs/tf_gpu_env/lib

3、pro文件添加include 、lib和depend

INCLUDEPATH += /usr/local/anaconda3/envs/tf_gpu_env/include/python3.9
LIBS += -L/usr/local/anaconda/envs/tf_gpu_env/lib  -lpython3.9
DEPENDPTH += /usr/local/anaconda3/envs/tf_gpu_env/include/python3.9

4、 MainWindow.h添加include <Python.h>

        解决slots关键字冲突:
                方法一:在include <QmainWindow>前添加

                方法二:

#undef slots
include <Python.h>
#define slots Q_SLOTS

 5、mainwindow.cpp调用python

char* buf;
Py_Initialize()//初始化
if(Py_IsInitialized())
{
PyRun_SimpleString(“import sys”);
PyRun_SimpleString(sys.path.append('./'));//python脚本路径
PyObject* pymodule=PyImport_ImportModule(“pythontest”);//导入脚本,名称为pythontest.py


PyObject_CallMethod(pymodule,“StartMesg”,“i”,9)//StartMesg函数名,“i”表示传入一个整型参数,9为实际传入参数(例如:“is”表示传入一个整形和自已字符串)

PyArg_Prase(PyObject_CallObject(PyObject_GetAttrString(pymodule,“ReturnResult”),nullptr),“s”,&buf)//获取ReturnResult函数的返回值
}


版权声明:本文为weixin_43712556原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。