浅析Windows 嵌入python解释器的过程


Posted in Python onJuly 26, 2019

这次主要记录在windows下嵌入 python 解释器的过程,程序没有多少,主要是头文件与库文件的提取。

程序平台:windows10 64 bit、 Qt 5.5.1  MSVC  2013 32 bit   、 python 3.7.4  32 bit

在ubuntu和 windows 下使用 C/C++ 嵌入 Python 是有些不同的, ubuntu 下可以使用对应命令来获取 python 配置信息, windows 下直接链接对应库文件与头文件即可。

通过对python解释器的嵌入,我们可以自己做一个 python 编辑器,在内部可以定义自己的包;在运行时候 python 脚本的编写就相当于一个随时可变而又无需编译的动态库了。当然,有点还有很多,这种 C/C++ 嵌入脚本语言的应用在游戏上也十分常用。好了,下面简单说下嵌入的流程。

1. Python 安装包下载

我是直接在官网上下载的,Downloads-->>Python3.7.4。

2.  提取库文件与头文件

安装完的文件如下图,其中 include 文件夹里面是头文件, python37.dll 是我们所需要的动态链接库,就像 linux 下的 .so 文件一样。

3. 在Qt下嵌入 python

我使用的是Qt的控制台程序,也就是 C++ 嵌入 python 。

① pro 文件中链接库

Qt pro中文件如图:

注意:虽然系统是64位的,但是 Qt 与 python 都是 32 位的

②在 C++ 程序中调用 python

在程序中调用python语句分以下几个步骤

1> 包含头文件

2> 初始化python解释器

3> 使用C接口运行 python 语句

4> 调用完成后释放资源。当然也可以再构造函数中初始化一次,在析构函数中再释放资源。

4.  程序运行结果

最后再说些其他的:在嵌入python中有以下几个问题要考虑:

① python 脚本的静态语法检查与运行中错误的输出

② python 输出信息重定向到宿主程序

③如何停止、暂停 ( 钩子函数 ) 正在运行的 python 脚本

④当运行 python 阻塞接口时,停止会怎样?

⑤ python 脚本中有耗时操作,需要运行到线程或进程中

总结

以上所述是小编给大家介绍的Windows 嵌入python解释器的过程,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
Python查找函数f(x)=0根的解决方法
May 07 Python
简单实现python爬虫功能
Dec 31 Python
Python原始字符串与Unicode字符串操作符用法实例分析
Jul 22 Python
实例分析python3实现并发访问水平切分表
Sep 29 Python
python 读取鼠标点击坐标的实例
Dec 29 Python
了解不常见但是实用的Python技巧
May 23 Python
自定义django admin model表单提交的例子
Aug 23 Python
python写入数据到csv或xlsx文件的3种方法
Aug 23 Python
Python实现删除某列中含有空值的行的示例代码
Jul 20 Python
python切割图片的示例
Nov 12 Python
MATLAB 如何求取离散点的曲率最大值
Apr 16 Python
在pycharm中无法import所安装的库解决方案
May 31 Python
python flask几分钟实现web服务的例子
Jul 26 #Python
解决python flask中config配置管理的问题
Jul 26 #Python
Django REST framework内置路由用法
Jul 26 #Python
python flask web服务实现更换默认端口和IP的方法
Jul 26 #Python
Django 开发环境与生产环境的区分详解
Jul 26 #Python
python3发送邮件需要经过代理服务器的示例代码
Jul 25 #Python
如何实现Django Rest framework版本控制
Jul 25 #Python
You might like
php操作(删除,提取,增加)zip文件方法详解
2015/03/12 PHP
php实现的统计字数函数定义与使用示例
2017/07/26 PHP
PHP使用Session实现上传进度功能详解
2019/08/06 PHP
JQuery扩展插件Validate—6 radio、checkbox、select的验证
2011/09/05 Javascript
jquery click([data],fn)使用方法实例介绍
2013/07/08 Javascript
jquery遍历之parent()和parents()的区别及parentsUntil()方法详解
2013/12/02 Javascript
JS与C#编码解码
2013/12/03 Javascript
封装好的一个万能检测表单的方法
2015/01/21 Javascript
JavaScript中判断变量是数组、函数或是对象类型的方法
2015/02/25 Javascript
javascript实现鼠标拖动改变层大小的方法
2015/04/30 Javascript
Nodejs从有门道无门菜鸟起飞必看教程
2016/07/20 NodeJs
使用do...while的方法输入一个月中所有的周日(实例代码)
2016/07/22 Javascript
浅析JavaScriptSerializer类的序列化与反序列化
2016/11/22 Javascript
javascript性能优化之分时函数的介绍
2018/03/28 Javascript
JavaScript创建、读取和删除cookie
2019/09/03 Javascript
vue 实现click同时传入事件对象和自定义参数
2021/01/29 Vue.js
[06:16]DOTA2守卫传承者——职业选手谈心路历程
2015/02/26 DOTA
[01:29]2017 DOTA2国际邀请赛官方英雄手办展示
2017/03/18 DOTA
[43:32]Winstrike vs VGJ.S 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
Python struct模块解析
2014/06/12 Python
通过Python来使用七牛云存储的方法详解
2015/08/07 Python
Python实现好友全头像的拼接实例(推荐)
2017/06/24 Python
Flask框架通过Flask_login实现用户登录功能示例
2018/07/17 Python
python分批定量读取文件内容,输出到不同文件中的方法
2018/12/08 Python
python opencv调用笔记本摄像头
2019/08/28 Python
pytorch实现对输入超过三通道的数据进行训练
2020/01/15 Python
浅谈图像处理中掩膜(mask)的意义
2020/02/19 Python
使用PyWeChatSpy自动回复微信拍一拍功能的实现代码
2020/07/02 Python
浙江文明网签名寄语
2014/01/18 职场文书
党员领导干部廉洁从政承诺书
2014/03/27 职场文书
班级寄语大全
2014/04/10 职场文书
大学生第一学年自我鉴定2015
2014/09/28 职场文书
青年文明号汇报材料
2014/12/23 职场文书
土地租赁协议书
2015/01/29 职场文书
龙门石窟导游词
2015/02/02 职场文书
springboot创建的web项目整合Quartz框架的项目实践
2022/06/21 Java/Android