QT调用python的部分问题

环境

qt5.9.0+python3.5.2 (都是32位)

问题

1.导入不了<Python.h>头文件和libs的问题

可能与下面几点有关:

  • 建议路径不要带空格,中文等,最好python直接就安装在某个盘的根目录,好找。例如:D:/python35-32/
  • qt版本和python版本都一致,以前我用32位qt与64位python。
  • python的环境变量一定要添加。

2.import不了文件??

可能如下:

  • 引入的python文件,需与生成的exe文件路径一致,所以需将python放入release文件夹内。放项目内,和项目同文件夹都无法引入python文件。

3.出现

D:\Python35\include/object.h:446:23: error: expected unqualified-id before ‘;‘ token PyType_Slot *slots; /* terminated by slot==0. */

原因:由于QT中定义了slots作为关键了,而python3中有使用slot作为变量,所以有冲突。

解决:只是在python的object.h中 slots冲突,因此修改object.h(原文件请备份):

#undef slots //这里添加
typedef struct{
    const char* name;
    int basicsize;
    int itemsize;
    unsigned int flags;
    PyType_Slot *slots; /* terminated by slot==0. */
} PyType_Spec;
#define slots Q_SLOTS //这里添加

参考文章

【1】QT与Python混合编程经验记录:https://www.cnblogs.com/jiaping/p/6321859.html

【2】win10 + QT5.9.3 调用python程序(.py):https://blog.csdn.net/octdream/article/details/103177627

【3】Qt5(C++)调用python3脚本(带输入输出参数):https://blog.csdn.net/Sun_tian/article/details/104328564?depth_1-utm_source=distribute.pc_relevant.none-task-blog-OPENSEARCH-2&utm_source=distribute.pc_relevant.none-task-blog-OPENSEARCH-2

原文地址:https://www.cnblogs.com/nahaohao/p/12630322.html

时间: 2024-10-13 02:00:46

QT调用python的部分问题的相关文章

QT调用python脚本

QProcess *proc = new QProcess(); proc->setEnvironment(proc->environment()); QString appPath = QCoreApplication::applicationDirPath(); proc->start(tr("sh ")+appPath+tr("/abc")); // proc->start(tr("python ")+appPath

QT中 使用c++调用python

最近在做一个项目,开发环境用的是QT c++.项目中使用amazon云服务,调研发现有一个Amazon云的python接口.就有了标题中的问题,需要用C++来调用python脚本. 下面是一个c++调用python的小例子.我先贴出代码,然后在详细介绍. # -*- coding: cp936 -*- #定义hello函数,这个函数的功能是输出“hello world!” def hello(): print("hello world!") 上面就是我们一会要用C++调用python脚

在Julia语言中调用Python函数

在PyCall扩展包中,模仿Python的import语句,提供了一个可以导入Python模块的@pyimport宏.并且,为能在Julia中使用模块内的函数和常量做了封装,以及支持在Julia与Python间的自动类型转换. 同时,它还提供了对Python对象进行底层操作的设施.其中包括能与不透明的Python对象相对应的'PyObjec'类型,以及在Julia语言中对Python函数进行调用且做类型转换的pycall. 安装 在Julia中,只需要使用Pkg.add("PyCall"

C++调用Python浅析

环境 VS2005Python2.5.4 Windows XP SP3 简述 一般开发过游戏的都知道Lua和C++可以很好的结合在一起,取长补短,把Lua脚本当成类似动态链接库来使用,很好的利用了脚本开发的灵活性.而作为一门流行的通用型脚本语言python,也是可以做到的.在一个C++应用程序中,我们可以用一组插件来实现一些具有统一接口的功能,一般插件都是使用动态链接库实现,如果插件的变化比较频繁,我们可以使用Python来代替动态链接库形式的插件(堪称文本形式的动态链接库),这样可以方便地根据

QT调用百度语音REST API实现语音合成

QT调用百度语音REST API实现语音合成 1.首先点击点击链接http://yuyin.baidu.com/docs/tts 点击access_token,获取access_token,里面有详细步骤,不再赘述 记下链接,等会在QT程序中会用到,tex后面跟要转换成语音的文字,tok后面是刚获得的access_token 2.打开Qt Creator,新建一个QWidget应用程序,绘制界面如下 3.获取语音按钮槽函数如下 void Widget::on_pushButton_clicked

C#调用python文件执行

我的电脑环境是使用.net framework4.5.1,如果在调试过程中调不通请注意 我用的是Visual studion 2017,python组件下载地址:http://ironpython.codeplex.com/releases/view/ 下载的版本是2.7,下载安装完之后记得引入安装路径下的以下三个dll (1)首先先说一个简单的功能,在c#代码中执行python字符串,内容如下: (2)c#调用python文件: 在当前目录下新建一个后缀名为py的文件,文件名为AmoutDis

Qt调用Server SQL中的存储过程

Server SQL中的存储过程如下: CREATE procedure PINSERTPC @pcnum int, @pcname varchar(50), @pctype int, @ipaddress varchar(50), @port  int, @pcid  int outputas --declare @pcid intif exists (select * from COMPUTERTABLE where PcNum = @pcnum) set @pcid = -1elsebeg

编程:C#调用Python模块

当下,C#与Python都是比较热门的计算机编程语言,他们各有优缺点,如果能让他们互相配合工作,那是多么美好的事情,今天我来讲解一下如何利用C#来调用Python. 如果让C#支持调用Python模块,我们首先需要安装一些扩展,这里推荐使用IronPython库. 第一步,我们需要下载IronPython库的安装包,这里请大家移步官网 http://ironpython.codeplex.com/ ,下载并安装相关库文件. 第二步,我们新建一个C#控制台测试项目,并将IronPython安装目录

使用c语言调用python小结

最近在做一个漏洞展示平台,攻击实现部分使用python实现,c语言实现部分使用libcli库做一个类似telnet的东东,回调函数run的时候调用python模块.针对c调用python,做个了小demo python模块:demo.py def print_arg(str): print str def add(a,b): print 'a=', a print 'b=', b return a + b class Class_A: def __init__(self): print "ini