c++Qt Creator调用 python 完整版 + 解决bug过程

这篇具有很好参考价值的文章主要介绍了c++Qt Creator调用 python 完整版 + 解决bug过程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

文章首发于我的个人博客:欢迎大佬们来逛逛

创建项目

选择创建 qmake 项目:
qt调用python,QT学习,python,python,c++,qt

选择创建 MSVC 64bit 版本:(选择Mingw可能会出错)

qt调用python,QT学习,python,python,c++,qt

首先我们先创建一个普通的python文件

qt调用python,QT学习,python,python,c++,qt
qt调用python,QT学习,python,python,c++,qt

💡 注意文件名不要是 test.py,因为python中存在一个此文件,会产生冲突

输入以下内容用于测试python及常用库的导入

import numpy as np
import pandas as pd

def hello():
    print("hello")

配置python环境

选择**工具 - 外部 - 配置**

qt调用python,QT学习,python,python,c++,qt

选择**外部工具** 点击**添加**添加工具

 qt调用python,QT学习,python,python,c++,qt

我们需要依次设置这三个参数

  1. 执行档:你的python.exe的路径,我使用的是anaconda3的python,因此我的路径是:F:\Tools\Ana\python.exe
  2. 参数:直接复制粘贴:%{CurrentDocument:FilePath}
  3. 工作目录:直接复制粘贴:%{CurrentDocument:Path}

qt调用python,QT学习,python,python,c++,qt

输入完成后,点击应用 然后确定

可以给你的环境改个名字:我的是 python3.10版本.

qt调用python,QT学习,python,python,c++,qt

切换到你的python文件中,测试是否正确:

选择**工具 - 外部 - python310**

qt调用python,QT学习,python,python,c++,qt

运行如下:说明配置python环境成功,也就是说你以后写的python代码就可以在这个地方直接运行了。

qt调用python,QT学习,python,python,c++,qt


导入Python库

我们想要真正的在Qt中调用Python,就必须要一个头文件:<Python.h>

这里面包含了很多Python与C互通的接口。

但是如果我们直接输入:#include <Python.h> 会报错,根本就找不到!!

我们需要导入。

检查以下我们刚才配置环境时,与**Python.exe 同级**目录下的 include 文件夹下有没有 **Python.h**文件,如果有就说明可以实现。

如果没有这个文件,你最好重新选择一个Python.exe,重新实现配置Python环境这一节,因为即使你配置好了环境,但是因为没有这个头文件也无法使用。

qt调用python,QT学习,python,python,c++,qt

如果有,则我们开始导入:

右键项目名称:选择**添加库**。

选择添加库

qt调用python,QT学习,python,python,c++,qt

qt调用python,QT学习,python,python,c++,qt

注意这个地方非常重要!!!

我们要填写两个参数:

  1. 库文件:就是你的 **libs** 文件夹位置的python310.lib,我的位于:F:\Tools\Ana\libs\python310.lib
  2. 包含路径:就是刚才介绍的include的文件夹位置,我的位于:F:\Tools\Ana\include
  3. 注意其他的地方选择要和我的一样。

qt调用python,QT学习,python,python,c++,qt

点击下一步,完成,接着你就会跳转到 .pro 文件中:

并且添加了如下的内容

其中就包含了我们所需要的 libs 和 include 等配置信息,我们直接保存即可。

qt调用python,QT学习,python,python,c++,qt

其他坑点

Python.h 头文件报错

到这时我们就已经配置完成了,我们现在可以使用 Python.h 了,但是你会发现报一个错误,这是因为Qt的slots 和 python.h这个文件中的这个变量冲突了。

我们执行以下操作:

找到 object.h 文件:

qt调用python,QT学习,python,python,c++,qt

并且在这个位置修改如下:即添加一个 #undef 和#define 即可。

qt调用python,QT学习,python,python,c++,qt

使用管理员模式保存,这个错误就解决了。


ModuleNotFoundError: No module named 'encodings’ 完美解决

之后我们可以测试以下,输入以下代码:

获取Python文件中的这个函数模块,然后再调用:

#include <QCoreApplication>
#include <Python.h>
#include <iostream>
#include <QDebug>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

		//初始化
    Py_Initialize();

    PyObject* module=PyImport_ImportModule("testPython");
    if (!module){
        qInfo()<<"Python file cant open!";
        return -1;
    }
    PyObject* pFunc=PyObject_GetAttrString(module,"hello");
    if (!pFunc){
        qInfo()<<"the Python function cant load!";
        return -1;
    }
		//调用函数
    PyObject_CallFunction(pFunc,NULL);

    Py_Finalize();
    return a.exec();
}

但是,之后你就会发现一个惊人的错误:

qt调用python,QT学习,python,python,c++,qt

这是怎么回事,但是我在 anaconda3 中的Python中运行(因为我使用就是这个python)是存在这个模块的:

qt调用python,QT学习,python,python,c++,qt

这并不是你的问题,解决如下:

PYTHONHOME 环境变量是用于指定Python 安装路径的,而 PYTHONPATH 环境变量是用于指定Python 模块搜索路径的

  1. 首先我们需要规定python的**home** ,即使用这样一个函数:注意这里的python安装路径是这样的:F:\Tools\Ana
//添加搜索python安装路径
Py_SetPythonHome(L"F:\\Tools\\Ana");

qt调用python,QT学习,python,python,c++,qt

qt调用python,QT学习,python,python,c++,qt

之后我们就解决了!!!但是这样做是不兼容的,因为我们如果要将项目打包发给别人,**别人可没有这个路径!!!**因此这个路径只能有你自己拥有,换句话说如果我们不写这一条语句就好了!!!改用环境变量!!

  1. 添加系统环境变量PYTHONHOME=F:\Tools\Ana

qt调用python,QT学习,python,python,c++,qt

之后你把上面这条语句直接删除即可,注意:添加环境变量可能需要重启电脑生效,请耐心等待!

看到了吗,我们已经删除了并且不会出现这个报错了
qt调用python,QT学习,python,python,c++,qt


找不到python文件

但是我们又出现了一个新的错误,即加载python时找不到这个文件,注意我的 testPython 是python文件名,不要加 .py后缀

这个问题是由于你的 qt生成的 .exe 程序找不到这个python文件,把他们放到同一目录下即可:
qt调用python,QT学习,python,python,c++,qt

qt调用python,QT学习,python,python,c++,qt

如何找到这个路径不用我多说了吧!!


成功!

qt调用python,QT学习,python,python,c++,qt

qt调用python,QT学习,python,python,c++,qt


参考链接:

Qt C++ Python 混合编程测试文档

Qt Creator中调用Python的常见问题_python path configuration: pythonhome = (not set) _妥善的博客-CSDN博客

解决QT C++调用python显示错误ModuleNotFoundError: No module named ‘encodings‘)及打包发布问题_modulenotfounderror: no module named 'encodings_代码行者的博客-CSDN博客

Qtcreator中C++调用python方法_👎 error: lnk1146: 没有用选项“/libpath:”指定的参数_alxe_made的博客-CSDN博客

python嵌入错误‘No module named site’的解决方案_no module named site pythonpath_游蓝海的博客-CSDN博客文章来源地址https://www.toymoban.com/news/detail-771739.html

到了这里,关于c++Qt Creator调用 python 完整版 + 解决bug过程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Qt Creator启动后卡死无响应的解决方法(已解决)

    我的是 有道云词典屏幕取词会与QtUI进程产生冲突 ,我关掉了有道云词典的取词功能,则正常了。 参考这位博客,他还讲了其它的一些可能原因:QTCreator打开无响应问题_qt creator卡死_我对世界嗤之以鼻的博客-CSDN博客 如果 Qt Creator启动速度特别慢,可以看我这个博客:Qt Cr

    2024年02月14日
    浏览(44)
  • 【已解决】Qt Creator设计模式被禁用不能点的原因及解决方案

    Qt Creator 下载地址(含历史版本):https://download.qt.io/official_releases/qtcreator/ Qt Creator 目前最新版为12.0.1,安装后打开 .qml 文件发现设计工具图标为禁用状态。 根据官网材料(Qt Creator 6 Released)显示,自2021年12月2日发布的Qt Creator 6.0 版本之后Qt Quick Designer设计模式为默认禁止状

    2024年01月23日
    浏览(46)
  • Qt Creator创建Python界面工程并打包为可执行exe文件

    一、QT6安装 QT6安装不是本文重点,请参考网上其他教程。 二、QT6创建Python界面工程 1.打开QT Creator,按照下面步骤创建Python界面工程。 输入工程名称pytest 输入类名:myMainWindow,基类选择QMainWindow 2.添加资源文件resources.qrc

    2024年02月08日
    浏览(56)
  • Qt、Qt Creator下载、安装

    Qt是一个跨平台应用开发框架。 Qt Creator是一个跨平台的集成开发环境(IDE),集成了Qt所提供的功能,可以单独下载使用,也可以结合Qt组合使用。 下载地址:https://download.qt.io/archive/ (1)进入下载界面后,选择下qt文件夹,或者qtcreator文件夹。 (2)此处我选择qt文件夹,进

    2024年02月08日
    浏览(40)
  • Linux配置QT Creator环境:ubuntu中安装QT Creator环境

      目前市面上很多公司使用QT Creator进行界面开发,基本都会选择在Linux环境进行,优点不仅是市场所需,更是方便后期代码的移植,相较于Windows系统,Linux系统移植性非常好。故此篇文章,介绍如何在Linux环境中安装QT Creator环境(注:本作者以QT Creator 5.14.2进行介绍,大家

    2024年02月13日
    浏览(46)
  • Qt Creator 创建 Qt 默认窗口程序

    Qt 入门实战教程(目录) Windows Qt 5.12.10下载与安装 本文介绍用Qt自带的集成开发工具Qt Creator创建Qt默认的窗口程序。 本文不需要你另外安装Visual Studio 2022这样的集成开发环境,也不需要你再在Visual Studio 2022中安装Qt VS Tools这样的插件。 目的就是为了能够让你可以更快的把Q

    2024年02月09日
    浏览(50)
  • Qt6 c++教程2 Qt Creator简介

    Qt Creator是Qt自带的集成开发环境(IDE),用于跨平台应用程序开发。在本章中,您将学习Qt Creator集成开发环境的基础知识,并了解集成开发环境的用户界面 (UI)。我们还将了解如何在 Qt Creator中创建和管理项目。本Qt 模块包括使用Qt Creator开发一个简单的Qt应用程序、快捷方式

    2024年02月05日
    浏览(45)
  • Qt6入门教程 4:Qt Creator常用技巧

    在上一篇Qt6入门教程 3:创建Hello World项目中,通过创建一个Qt项目,对Qt Creator已经有了比较直观的认识,本文将介绍它的一些常用技巧。 Qt Creator启动后默认显示欢迎页面 创建项目已经用过了,打开项目也很简单,就是打开一个已经存在的项目。 项目历史记录非常有用,能

    2024年02月03日
    浏览(55)
  • Qt creator下载安装

    Qt4的开发环境包括3个基本部分:Qt Framework(Qt库)、QtCreator(IDE)和MinGW(编译调试),都要分别下载安装并配置,比较麻烦。 Qt5之后,Qt公司将三者打包成一个安装文件,比如Qt5.4.0的离线安装包,这样方便许多。所有直接安装Qt5就行。(后面有安装的qt4需要可以往下看)

    2024年02月07日
    浏览(37)
  • 三、Qt Creator 使用

    关于Qt的安装及环境配置,在我的上一篇《二、QT下载、安装及问题解决(windows系统)》已经讲过了。 本章节有一个重点,在新建 工程文件时,所在路径不要有中文,否则编译及运行程序不能正常运行。 在使用Qt Creator(以下简称QT)前,请先做好心里准备,假如你用过宇宙第一

    2024年01月20日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包