浅析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的Django框架中编写编译函数
Jul 20 Python
Python和Java进行DES加密和解密的实例
Jan 09 Python
Python抓取聚划算商品分析页面获取商品信息并以XML格式保存到本地
Feb 23 Python
如何实现删除numpy.array中的行或列
May 08 Python
python for循环输入一个矩阵的实例
Nov 14 Python
python实现维吉尼亚加密法
Mar 20 Python
matlab灰度图像调整及imadjust函数的用法详解
Feb 27 Python
python 子类调用父类的构造函数实例
Mar 12 Python
Python使用sqlite3模块内置数据库
May 07 Python
Python基于gevent实现高并发代码实例
May 15 Python
零基础学Python之前需要学c语言吗
Jul 21 Python
Django windows使用Apache实现部署流程解析
Oct 12 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的异常处理类Exception的使用及说明
2012/06/13 PHP
php基于GD库画五星红旗的方法
2015/02/24 PHP
JavaScript 对话框和状态栏使用说明
2009/10/25 Javascript
chrome原生方法之数组
2011/11/30 Javascript
js jquery验证银行卡号信息正则学习
2013/01/21 Javascript
jQuery 文本框得失焦点的简单实例
2014/02/19 Javascript
JQuery zClip插件实现复制页面内容到剪贴板
2015/11/02 Javascript
第四篇Bootstrap网格系统偏移列和嵌套列
2016/06/21 Javascript
AngularJS入门教程之ng-class 指令用法
2016/08/01 Javascript
bootstrap选项卡使用方法解析
2017/01/11 Javascript
Node.js获取前端ajax提交的request信息
2017/02/20 Javascript
vue2笔记 — vue-router路由懒加载的实现
2017/03/03 Javascript
JS排序之选择排序详解
2017/04/08 Javascript
vue组件初学_弹射小球(实例讲解)
2017/09/06 Javascript
element-ui多文件上传的实现示例
2019/04/10 Javascript
在vue中使用Base64转码的案例
2020/08/07 Javascript
[04:30]显微镜下的DOTA2第五期——拉比克
2013/09/26 DOTA
[02:32]DOTA2亚洲邀请赛 VG战队巡礼
2015/02/03 DOTA
python实现的简单抽奖系统实例
2015/05/22 Python
Python socket编程实例详解
2015/05/27 Python
python素数筛选法浅析
2018/03/19 Python
Python之两种模式的生产者消费者模型详解
2018/10/26 Python
在python tkinter界面中添加按钮的实例
2020/03/04 Python
python pyecharts 实现一个文件绘制多张图
2020/05/13 Python
基于HTML5+CSS3实现简单的时钟效果
2017/09/11 HTML / CSS
美国在线乐器和设备商店:Musician’s Friend
2018/07/06 全球购物
中专生毕业自我鉴定
2013/11/01 职场文书
大学生应聘推荐信范文
2013/11/19 职场文书
幼儿园大班开学教师寄语
2014/04/03 职场文书
演讲稿的格式及范文
2014/08/22 职场文书
安全责任书范文
2014/08/25 职场文书
出国留学英文自荐信
2015/03/25 职场文书
表扬信范文
2019/04/22 职场文书
SpringBoot整合JWT的入门指南
2021/06/29 Java/Android
VUE递归树形实现多级列表
2022/07/15 Vue.js
Spring boot admin 服务监控利器详解
2022/08/05 Java/Android