浅析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语言的优雅之处
Jul 04 Python
django模型层(model)进行建表、查询与删除的基础教程
Nov 21 Python
django数据库migrate失败的解决方法解析
Feb 08 Python
使用实现pandas读取csv文件指定的前几行
Apr 20 Python
对python3中pathlib库的Path类的使用详解
Oct 14 Python
python分数表示方式和写法
Jun 26 Python
python-Web-flask-视图内容和模板知识点西宁街
Aug 23 Python
python调用matplotlib模块绘制柱状图
Oct 18 Python
python打印文件的前几行或最后几行教程
Feb 13 Python
python 已知一个字符,在一个list中找出近似值或相似值实现模糊匹配
Feb 29 Python
如何使用python的ctypes调用医保中心的dll动态库下载医保中心的账单
May 24 Python
Pytorch 卷积中的 Input Shape用法
Jun 29 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 $_SERVER["REQUEST_URI"]获取值的通用解决方法
2010/06/21 PHP
php中用加号与用array_merge合并数组的区别深入分析
2013/06/03 PHP
zend optimizer在wamp的基础上安装图文教程
2013/10/26 PHP
PHP利用str_replace防注入的方法
2013/11/10 PHP
PHP swoole和redis异步任务实现方法分析
2019/08/12 PHP
Javascript异步表单提交,图片上传,兼容异步模拟ajax技术
2010/05/10 Javascript
使用js实现一个可编辑的select下拉列表
2014/02/20 Javascript
javascript中数组的多种定义方法和常用函数简介
2014/05/09 Javascript
基于jQuery实现的文字按钮表单特效整理
2014/12/07 Javascript
jQuery判断数组是否包含了指定的元素
2015/03/10 Javascript
JS基于myFocus库实现各种功能的tab选项卡切换效果
2015/09/19 Javascript
Angularjs注入拦截器实现Loading效果
2015/12/28 Javascript
理解JS绑定事件
2016/01/19 Javascript
jquery form表单获取内容以及绑定数据
2016/02/24 Javascript
详解Jquery 遍历数组之$().each方法与$.each()方法介绍
2017/01/09 Javascript
xmlplus组件设计系列之列表(4)
2017/04/26 Javascript
react写一个select组件的实现代码
2019/04/03 Javascript
js+html实现点名系统功能
2019/11/05 Javascript
解决vant的Toast组件时提示not defined的问题
2020/11/11 Javascript
vue实现拖拽进度条
2021/03/01 Vue.js
pycharm下打开、执行并调试scrapy爬虫程序的方法
2017/11/29 Python
Django框架视图函数设计示例
2019/07/29 Python
Python中模块(Module)和包(Package)的区别详解
2019/08/07 Python
python tkinter组件摆放方式详解
2019/09/16 Python
tensorflow之自定义神经网络层实例
2020/02/07 Python
Python垃圾回收机制三种实现方法
2020/04/27 Python
HTML5 Canvas的常用线条属性值总结
2016/03/17 HTML / CSS
IWOOT美国:新奇的小玩意
2018/04/27 全球购物
校领导推荐信
2013/11/01 职场文书
保荐人的岗位职责
2013/11/19 职场文书
大学生军训自我鉴定
2014/02/12 职场文书
《猴子种树》教学反思
2014/02/14 职场文书
大学生简短的自我评价分享
2014/02/20 职场文书
2014年小学少先队工作总结
2014/12/18 职场文书
导游欢迎词范文
2015/01/23 职场文书
承诺书应该怎么写?
2019/09/10 职场文书