浅析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 相关文章推荐
pyqt4教程之实现半透明的天气预报界面示例
Mar 02 Python
python实现登陆知乎获得个人收藏并保存为word文件
Mar 16 Python
对python程序内存泄漏调试的记录
Jun 11 Python
Python实现基于PIL和tesseract的验证码识别功能示例
Jul 11 Python
python3 中文乱码与默认编码格式设定方法
Oct 31 Python
python生成requirements.txt的两种方法
Sep 18 Python
python中count函数简单用法
Jan 05 Python
Python itertools.product方法代码实例
Mar 27 Python
Pandas对DataFrame单列/多列进行运算(map, apply, transform, agg)
Jun 14 Python
python利用google翻译方法实例(翻译字幕文件)
Sep 21 Python
Python Pandas 删除列操作
Mar 16 Python
python神经网络学习 使用Keras进行简单分类
May 04 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 进行手机 APP 开发(API 接口开发)
2014/08/11 PHP
PHP中字符安全过滤函数使用小结
2015/02/25 PHP
php判断表是否存在的方法
2015/06/18 PHP
PHP调用API接口实现天气查询功能的示例
2017/09/21 PHP
Thinkphp3.2简单解决多文件上传只上传一张的问题
2017/09/26 PHP
PHP实现统计所有字符在字符串中出现次数的方法
2017/10/17 PHP
YII2框架使用控制台命令的方法分析
2020/03/18 PHP
由prototype_1.3.1进入javascript殿堂-类的初探
2006/11/06 Javascript
setInterval 和 setTimeout会产生内存溢出
2008/02/15 Javascript
jquery Mobile入门—多页面切换示例学习
2013/01/08 Javascript
jQuery.extend()的实现方式详解及实例
2013/06/29 Javascript
返回上一页并自动刷新的JavaScript代码
2014/02/19 Javascript
js实现文章文字大小字号功能完整实例
2014/11/01 Javascript
jQuery中last()方法用法实例
2015/01/06 Javascript
jQuery+HTML5+CSS3制作支持响应式布局时间轴插件
2016/08/10 Javascript
Vue.js第一天学习笔记(数据的双向绑定、常用指令)
2016/12/01 Javascript
JavaScript多态与封装实例分析
2018/07/27 Javascript
基于javascript的拖拽类封装详解
2019/04/19 Javascript
Vue表单绑定的实例代码(单选按钮,选择框(单选时,多选时,用 v-for 渲染的动态选项)
2019/05/13 Javascript
vue cli3 调用百度翻译API翻译页面的实现示例
2019/09/13 Javascript
浅谈Layui的eleTree树式选择器使用方法
2019/09/25 Javascript
js实现随机点名器精简版
2020/06/29 Javascript
vue.js watch经常失效的场景与解决方案
2021/01/07 Vue.js
Python实现简单的语音识别系统
2017/12/13 Python
Python Web框架之Django框架cookie和session用法分析
2019/08/16 Python
python lambda表达式(匿名函数)写法解析
2019/09/16 Python
Python参数传递及收集机制原理解析
2020/06/05 Python
Python实现迪杰斯特拉算法过程解析
2020/09/18 Python
html5的canvas方法使用指南
2014/12/15 HTML / CSS
Carrs Silver官网:英国著名的银器品牌
2020/08/29 全球购物
linux面试题参考答案(6)
2016/06/23 面试题
Linux管理员面试经常问道的相关命令
2014/12/12 面试题
领导干部培训感言
2014/01/23 职场文书
党员干部2014全国两会学习心得体会
2014/03/10 职场文书
佛光寺导游词
2015/02/10 职场文书
Golang日志包的使用
2022/04/20 Golang