浅析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的词法分析与语法分析
May 18 Python
深入浅析python定时杀进程
Jun 06 Python
关于python的list相关知识(推荐)
Aug 30 Python
python实现用户答题功能
Jan 17 Python
python爬虫爬取快手视频多线程下载功能
Feb 28 Python
python3使用SMTP发送HTML格式邮件
Jun 19 Python
Python多线程应用于自动化测试操作示例
Dec 06 Python
python 处理数字,把大于上限的数字置零实现方法
Jan 28 Python
使用批处理脚本自动生成并上传NuGet包(操作方法)
Nov 19 Python
在TensorFlow中实现矩阵维度扩展
May 22 Python
python 使用OpenCV进行简单的人像分割与合成
Feb 02 Python
解决pycharm修改代码后第一次运行不生效的问题
Feb 06 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
基于文本的搜索
2006/10/09 PHP
php设计模式 Strategy(策略模式)
2011/06/26 PHP
PHP与MongoDB简介|安全|M+PHP应用实例详解
2013/06/17 PHP
php mb_substr()函数截取中文字符串应用示例
2014/07/29 PHP
php中字符查找函数strpos、strrchr与strpbrk用法
2014/11/18 PHP
PHP中的随机性 你觉得自己幸运吗?
2016/01/22 PHP
PHP中模拟链表和链表的基本操作示例
2016/02/27 PHP
Laravel框架中自定义模板指令总结
2017/12/17 PHP
解决Laravel5.5下的toArray问题
2019/10/15 PHP
javascript multibox 全选
2009/03/22 Javascript
JavaScript获取GridView中用户点击控件的行号,列号
2009/04/14 Javascript
js+css 实现遮罩居中弹出层(随浏览器窗口滚动条滚动)
2013/12/11 Javascript
vue.js评论发布信息可插入QQ表情功能
2017/08/08 Javascript
微信小程序如何实现在线客服功能
2019/10/16 Javascript
vue实现计步器功能
2019/11/01 Javascript
js实现淘宝浏览商品放大镜功能
2020/10/28 Javascript
Python实现输出某区间范围内全部素数的方法
2018/05/02 Python
python实现内存监控系统
2021/03/07 Python
python 协程 gevent原理与用法分析
2019/11/22 Python
Pytorch evaluation每次运行结果不同的解决
2020/01/02 Python
Python趣味实例,实现一个简单的抽奖刮刮卡
2020/07/18 Python
python使用ctypes库调用DLL动态链接库
2020/10/22 Python
HTML5 Video标签的属性、方法和事件汇总介绍
2015/04/24 HTML / CSS
Perricone MD裴礼康美国官网:抗衰老护肤品
2016/09/26 全球购物
德国最大的拼图在线商店:Puzzle.de
2016/12/17 全球购物
美国顶级水上运动专业店:Marine Products
2018/04/15 全球购物
英国Lookfantastic中文网站:护肤品美妆美发购物(英国直邮)
2020/04/27 全球购物
军训自我鉴定
2014/01/22 职场文书
团代会宣传工作方案
2014/05/08 职场文书
公司投资建议书
2014/05/16 职场文书
医德医风演讲稿
2014/05/20 职场文书
社区领导班子四风问题原因分析及整改措施
2014/09/28 职场文书
云台山导游词
2015/02/03 职场文书
狮子林导游词
2015/02/03 职场文书
接触艺术对孩子学习思维有益
2019/08/06 职场文书
html+css合并表格边框的示例代码
2021/03/31 HTML / CSS