浅析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发送伪造的arp请求
Jan 09 Python
Python 列表(List)操作方法详解
Mar 11 Python
TensorFLow用Saver保存和恢复变量
Mar 10 Python
Python unittest模块用法实例分析
May 25 Python
python3 面向对象__类的内置属性与方法的实例代码
Nov 09 Python
Python中的random.uniform()函数教程与实例解析
Mar 02 Python
Python将列表数据写入文件(txt, csv,excel)
Apr 03 Python
详解如何设置Python环境变量?
May 13 Python
Python实现操纵控制windows注册表的方法分析
May 24 Python
python实现对服务器脚本敏感信息的加密解密功能
Aug 13 Python
在pycharm中配置Anaconda以及pip源配置详解
Sep 09 Python
Python爬虫之Selenium多窗口切换的实现
Dec 04 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代码简化
2010/02/08 PHP
php注册登录系统简化版
2020/12/28 PHP
Laravel框架实现发送短信验证功能代码
2016/06/06 PHP
微信公众号开发之获取位置信息php代码
2018/06/13 PHP
漂亮的仿flash菜单,来自蓝色经典
2006/06/26 Javascript
javascript 获取图片颜色
2009/04/05 Javascript
转义字符(\)对JavaScript中JSON.parse的影响概述
2013/07/17 Javascript
javascript制作照片墙及制作过程中出现的问题
2016/04/04 Javascript
学习vue.js中class与style绑定
2016/12/03 Javascript
JS设置CSS样式的方式汇总
2017/01/21 Javascript
原生js更改css样式的两种方式
2017/03/15 Javascript
Vue.js学习笔记之常用模板语法详解
2017/07/25 Javascript
vue 国际化 vue-i18n 双语言 语言包
2018/06/07 Javascript
element-ui的回调函数Events的用法详解
2018/10/16 Javascript
js中Array对象的常用遍历方法详解
2019/01/17 Javascript
Vue 实现输入框新增搜索历史记录功能
2019/10/15 Javascript
jQuery 选择方法及$(this)用法实例分析
2020/05/19 jQuery
vue el-upload上传文件的示例代码
2020/12/21 Vue.js
用Python制作在地图上模拟瘟疫扩散的Gif图
2015/03/31 Python
在Python中使用PIL模块对图片进行高斯模糊处理的教程
2015/05/05 Python
解决python3 urllib 链接中有中文的问题
2018/07/16 Python
基于python实现文件加密功能
2020/01/06 Python
Tensorflow实现在训练好的模型上进行测试
2020/01/20 Python
浅谈SciPy中的optimize.minimize实现受限优化问题
2020/02/29 Python
解决Pycharm 中遇到Unresolved reference 'sklearn'的问题
2020/07/13 Python
Python 找出英文单词列表(list)中最长单词链
2020/12/14 Python
美国滑雪和滑雪板商店:Buckman
2018/03/03 全球购物
求职自荐信范文格式
2013/11/29 职场文书
合作意向协议书范本
2014/03/31 职场文书
委托公证书范本
2014/04/03 职场文书
环境科学专业求职信
2014/08/04 职场文书
老兵退伍标语
2014/10/07 职场文书
关于安全的广播稿
2014/10/23 职场文书
践行三严三实心得体会(2016推荐篇)
2016/01/06 职场文书
python生成可执行exe控制Microsip自动填写号码并拨打功能
2021/06/21 Python
浅谈Redis位图(Bitmap)及Redis二进制中的问题
2021/07/15 Redis