浅析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显示天气预报
Mar 02 Python
Python中除法使用的注意事项
Aug 21 Python
用Python实现协同过滤的教程
Apr 08 Python
Python语言描述随机梯度下降法
Jan 04 Python
Python设计模式之MVC模式简单示例
Jan 10 Python
zookeeper python接口实例详解
Jan 18 Python
python对文件目录的操作方法实例总结
Jun 24 Python
python matplotlib折线图样式实现过程
Nov 04 Python
关于numpy数组轴的使用详解
Dec 05 Python
Pytorch DataLoader 变长数据处理方式
Jan 08 Python
python 如何上传包到pypi
Dec 24 Python
python matplotlib工具栏源码探析三之添加、删除自定义工具项的案例详解
Feb 25 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
通过ICQ网关发送手机短信的PHP源程序
2006/10/09 PHP
php导入导出excel实例
2013/10/25 PHP
php微信开发之批量生成带参数的二维码
2016/06/26 PHP
thinkPHP中钩子的两种配置调用方法详解
2016/11/11 PHP
JS window.opener返回父页面的应用
2009/10/24 Javascript
jquery星级插件、支持页面中多次使用
2012/03/25 Javascript
JavaScript 模拟类机制及私有变量的方法及思路
2013/07/10 Javascript
使用JavaScript制作一个简单的计数器的方法
2015/07/07 Javascript
很酷的星级评分系统原生JS实现
2016/08/25 Javascript
详细总结Javascript中的焦点管理
2016/09/17 Javascript
JavaScript 栈的详解及实例代码
2017/01/22 Javascript
手机端转换rem适应
2017/04/01 Javascript
vue展示dicom文件医疗系统的实现代码
2018/08/27 Javascript
10分钟彻底搞懂Http的强制缓存和协商缓存(小结)
2018/08/30 Javascript
Mint UI组件库CheckList使用及踩坑总结
2018/12/20 Javascript
node.js中fs文件系统模块的使用方法实例详解
2020/02/13 Javascript
微信小程序实现上传多张图片、删除图片
2020/07/29 Javascript
Django数据库操作的实例(增删改查)
2017/09/04 Python
Python递归实现汉诺塔算法示例
2018/03/19 Python
python爬虫之模拟登陆csdn的实例代码
2018/05/18 Python
Django uwsgi Nginx 的生产环境部署详解
2019/02/02 Python
Python字符串的常见操作实例小结
2019/04/08 Python
详解Python 定时框架 Apscheduler原理及安装过程
2019/06/14 Python
PyQt5的QWebEngineView使用示例
2020/10/20 Python
康帕斯酒店预订:Compass Hospitality(支持中文)
2018/08/23 全球购物
怎样创建、运行java程序
2014/08/01 面试题
DataList 能否分页,请问如何实现?
2015/05/03 面试题
网络程序员自荐信
2014/01/25 职场文书
职工运动会感言
2014/02/07 职场文书
致跳远运动员广播稿
2014/02/11 职场文书
2015年幼儿园毕业感言
2014/02/12 职场文书
销售类求职信
2014/06/13 职场文书
个人求职信格式范文
2015/03/20 职场文书
公司表扬稿范文
2015/05/05 职场文书
卫生院艾滋病宣传活动总结
2015/05/09 职场文书
css filter和getUserMedia的联合使用
2022/02/24 HTML / CSS