浅析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中的lambda表达式的用法
Aug 28 Python
Android基于TCP和URL协议的网络编程示例【附demo源码下载】
Jan 23 Python
python2.7到3.x迁移指南
Feb 01 Python
python实现随机梯度下降法
Mar 24 Python
Python实现定制自动化业务流量报表周报功能【XlsxWriter模块】
Mar 11 Python
Python时间序列处理之ARIMA模型的使用讲解
Apr 02 Python
python如何基于redis实现ip代理池
Jan 17 Python
Python sqlite3查询操作过程解析
Feb 20 Python
浅谈Keras的Sequential与PyTorch的Sequential的区别
Jun 17 Python
Python非单向递归函数如何返回全部结果
Dec 18 Python
Jupyter Notebook 远程访问配置详解
Jan 11 Python
解决pycharm 格式报错tabs和space不一致问题
Feb 26 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中接口与抽象类的区别
2013/06/08 PHP
AJAX的跨域访问-两种有效的解决方法介绍
2013/06/22 PHP
php使用curl并发减少后端访问时间的方法分析
2016/05/12 PHP
关于ThinkPhp 框架表单验证及ajax验证问题
2017/07/19 PHP
PHP html_entity_decode()函数讲解
2019/02/25 PHP
js二级地域选择的实现方法
2013/06/17 Javascript
js中符号转意问题示例探讨
2013/08/19 Javascript
JS获取各种浏览器窗口大小的方法
2014/01/14 Javascript
JQuery datepicker 用法详解
2015/12/25 Javascript
详解基于javascript实现的苹果系统底部菜单
2016/12/02 Javascript
JavaScript中数组Array方法详解
2017/02/27 Javascript
JavaScrip数组删除特定元素的几种方法总结
2017/09/06 Javascript
JavaScript重复元素处理方法分析【统计个数、计算、去重复等】
2017/12/14 Javascript
vue中引入mxGraph的步骤详解
2019/05/17 Javascript
使用VUE实现在table中文字信息超过5个隐藏鼠标移到时弹窗显示全部
2019/09/16 Javascript
jquery css实现流程进度条
2020/03/26 jQuery
Node.js 中判断一个文件是否存在
2020/08/24 Javascript
Ajax获取node服务器数据的完整步骤
2020/09/20 Javascript
在Python中操作字典之setdefault()方法的使用
2015/05/21 Python
Python循环语句之break与continue的用法
2015/10/14 Python
python通过微信发送邮件实现电脑关机
2018/06/20 Python
python实现写数字文件名的递增保存文件方法
2018/10/25 Python
对Python实现累加函数的方法详解
2019/01/23 Python
python使用tomorrow实现多线程的例子
2019/07/20 Python
使用python编写一个语音朗读闹钟功能的示例代码
2020/07/14 Python
教师演讲稿范文
2014/01/08 职场文书
缴纳养老保险的证明
2014/01/10 职场文书
接受捐赠答谢词
2014/01/27 职场文书
《天安门广场》教学反思
2014/04/23 职场文书
党政领导班子群众路线对照检查材料思想汇报
2014/09/27 职场文书
公司租房协议书
2014/10/14 职场文书
2015元旦家电促销活动策划方案
2014/12/09 职场文书
2015年七七事变78周年纪念活动方案
2015/05/06 职场文书
七年级之开学家长寄语35句
2019/09/05 职场文书
2021年最新用于图像处理的Python库总结
2021/06/15 Python
js判断两个数组相等的5种方法
2022/05/06 Javascript