浅析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 相关文章推荐
仅用500行Python代码实现一个英文解析器的教程
Apr 02 Python
简单理解Python中基于生成器的状态机
Apr 13 Python
python根据日期返回星期几的方法
Jul 06 Python
python3.5实现socket通讯示例(TCP)
Feb 07 Python
Python3实现的字典遍历操作详解
Apr 18 Python
Python2 Selenium元素定位的实现(8种)
Feb 25 Python
python画图——实现在图上标注上具体数值的方法
Jul 08 Python
Python 使用type来定义类的实现
Nov 19 Python
解决python调用自己文件函数/执行函数找不到包问题
Jun 01 Python
python实现暗通道去雾算法的示例
Sep 27 Python
使用Python将xmind脑图转成excel用例的实现代码(一)
Oct 12 Python
linux mint中搜狗输入法导致pycharm卡死的问题
Oct 28 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
S900/ ETON E1-XM 收音机
2021/03/02 无线电
php的计数器程序
2006/10/09 PHP
php4的session功能评述(二)
2006/10/09 PHP
PHP中常用的数组操作方法笔记整理
2016/05/16 PHP
thinkPHP5.0框架安装教程
2017/03/25 PHP
Yii2.0实现生成二维码功能实例
2017/10/24 PHP
PHP小程序支付功能完整版【基于thinkPHP】
2019/03/26 PHP
基于PHP+mysql实现新闻发布系统的开发
2020/08/06 PHP
js loading加载效果实现代码
2009/11/24 Javascript
jquery下为Event handler传递动态参数的代码
2011/01/06 Javascript
JS读取cookies信息(记录用户名)
2012/01/10 Javascript
JS实现模拟风力的雪花飘落效果
2015/05/13 Javascript
谈一谈JS消息机制和事件机制的理解
2016/04/14 Javascript
js移动焦点到最后位置的简单方法
2016/11/25 Javascript
headjs实现网站并行加载但顺序执行JS
2016/11/29 Javascript
jQuery上传多张图片带进度条样式(DEMO)
2017/03/02 Javascript
20170918 前端开发周报之JS前端开发必看
2017/09/18 Javascript
JS匿名函数和匿名自执行函数概念与用法分析
2018/03/16 Javascript
原生javascript实现连连看游戏
2019/01/03 Javascript
AntV F2和vue-cli构建移动端可视化视图过程详解
2019/10/08 Javascript
探索Python3.4中新引入的asyncio模块
2015/04/08 Python
python3序列化与反序列化用法实例
2015/05/26 Python
对python中return和print的一些理解
2017/08/18 Python
matplotlib在python上绘制3D散点图实例详解
2017/12/09 Python
python爬虫获取百度首页内容教学
2018/12/23 Python
PyCharm的设置方法和第一个Python程序的建立
2019/01/16 Python
Python 隐藏输入密码时屏幕回显的实例
2019/02/19 Python
python add_argument()用法解析
2020/01/29 Python
python等差数列求和公式前 100 项的和实例
2020/02/25 Python
Python PyQt5运行程序把输出信息展示到GUI图形界面上
2020/04/27 Python
Python爬虫:Request Payload和Form Data的简单区别说明
2020/04/30 Python
英国Iceland杂货店:网上食品购物
2020/12/16 全球购物
受欢迎的大学生自我评价
2013/12/05 职场文书
解析CSS 提取图片主题色功能(小技巧)
2021/05/12 HTML / CSS
详解CSS开发过程中的20个快速提升技巧
2021/05/21 HTML / CSS
Nginx缓存设置案例详解
2021/09/15 Servers