QT调用Python脚本时,找不到模块

前言

我们都知道,现在的Qt是可以调用Python 脚本的,通过强大的Python库,去实现一些功能。网络上有很多的教程,根据教程的步骤,我一步步的实现,不过根据教程上的做,总是会有问题,下面我就根据我调试的过程,写下记录,共同学习;

准备

1.Python安装包(3.8.5)
2.QT

正题

1.安装Python环境,安装好后如下,include就是我们需要的头文件。
在这里插入图片描述
2.创建QT项目,打开项目文件(.pro),添加下面语句,其中路径根据实际情况写。

INCLUDEPATH += -I  C:/Users/001/AppData/Local/Programs/Python/Python38-32/include

LIBS += -LC:/Users/001/AppData/Local/Programs/Python/Python38-32 -lpython38

DISTFILES += \
    MyPython.py

在这里插入图片描述

3.创建python脚本

def hello():
    print("hello wrold ")

4 .QT

 Py_Initialize();
    //如果初始化失败,返回
    if(!Py_IsInitialized())
    {
        qDebug()<<"初始化失败!";
        return a.exec();
    }
    //加载模块,模块名称为myModule,就是myModule.py文件
    PyObject *pModule = PyImport_ImportModule("MyPython");
    //如果加载失败,则返回
    if(!pModule)
    {
        qDebug()<<"加载Python文件失败";
        return a.exec();
    }
   //加载函数greatFunc

    PyObject * pFuncHello = PyObject_GetAttrString(pModule, "hello");
    //如果失败则返回
        if(!pFuncHello)
        {
            qDebug()<<"加载函数失败";
            return a.exec();
        }
    //调用函数
    PyObject * pResult = PyObject_CallFunction(pFuncHello, NULL);
//    qDebug()<< *pResult;
    //退出
    Py_Finalize();

5.slots时QT的关键词,所以object.h中需要加入下图的两句
在这里插入图片描述

6.代码写好之后,运行时报错,加载模块失败
在这里插入图片描述

解决

出现这个问题,主要的原因就是,python解释器找不到python脚本,这个时候,我们就要想办法让python解释器能够找到我们写的脚本

解决方法:
1.在我们Debug文件夹,把我们的python脚本复制过去
在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值