浅析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中实现定制类的特殊方法总结
Sep 28 Python
Python的Bottle框架中获取制定cookie的教程
Apr 24 Python
python获取当前时间对应unix时间戳的方法
May 15 Python
Python中表达式x += y和x = x+y 的区别详解
Jun 20 Python
Python决策树和随机森林算法实例详解
Jan 30 Python
Python实现的井字棋(Tic Tac Toe)游戏示例
Jan 31 Python
Python中如何导入类示例详解
Apr 17 Python
Python程序暂停的正常处理方法
Nov 07 Python
如何理解Python中包的引入
May 29 Python
详解python logging日志传输
Jul 01 Python
pycharm 2020.2.4 pip install Flask 报错 Error:Non-zero exit code的问题
Dec 04 Python
据Python爬虫不靠谱预测可知今年双十一销售额将超过6000亿元
Nov 11 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
Yii2中OAuth扩展及QQ互联登录实现方法
2016/05/16 PHP
PHP7安装Redis扩展教程【Linux与Windows平台】
2016/09/30 PHP
thinkphp5 加载静态资源路径与常量的方法
2017/12/24 PHP
PHP正则匹配到2个字符串之间的内容方法
2018/12/24 PHP
laravel 关联关系遍历数组的例子
2019/10/10 PHP
JavaScipt基本教程之JavaScript语言的基础
2008/01/16 Javascript
IE浏览器兼容Firefox的JS脚本的代码
2008/10/23 Javascript
jQuery下扩展插件和拓展函数的写法(匿名函数使用的典型例子)
2010/10/20 Javascript
Wordpress ThickBox 点击图片显示下一张图的修改方法
2010/12/11 Javascript
js报错 Object doesn't support this property or method的原因分析
2011/03/31 Javascript
用nodejs写的一个简单项目打包工具
2013/05/11 NodeJs
javascript日期处理函数,性能优化批处理
2015/09/06 Javascript
判断输入的字符串是否是日期格式的简单方法
2016/07/11 Javascript
基于JavaScript表单脚本(详解)
2017/10/18 Javascript
浅谈Vue Element中Select下拉框选取值的问题
2018/03/01 Javascript
基于JS实现带动画效果的流程进度条
2018/06/01 Javascript
微信小程序实现复选框效果
2018/12/28 Javascript
vue实现的下拉框功能示例
2019/01/29 Javascript
jQuery实现为table表格动态添加或删除tr功能示例
2019/02/19 jQuery
vue设计一个倒计时秒杀的组件详解
2019/04/06 Javascript
[02:12]Dota 2 推出全新英雄—— 电炎绝手
2019/08/23 DOTA
python实现斐波那契递归函数的方法
2014/09/08 Python
TensorFlow实现Batch Normalization
2018/03/08 Python
python numpy实现文件存取的示例代码
2019/05/26 Python
Python 用matplotlib画以时间日期为x轴的图像
2019/08/06 Python
Python pickle模块实现对象序列化
2019/11/22 Python
python利用opencv实现SIFT特征提取与匹配
2020/03/05 Python
通过Python扫描代码关键字并进行预警的实现方法
2020/05/24 Python
利用python如何实现猫捉老鼠小游戏
2020/12/04 Python
HTML5新特性之用SVG绘制微信logo
2016/02/03 HTML / CSS
日本最大的药妆连锁店:Matsukiyo松本清药妆店
2017/11/23 全球购物
保时捷设计:Porsche Design
2019/03/30 全球购物
电气工程自动化求职信
2014/03/14 职场文书
学校感恩教育活动总结
2014/07/07 职场文书
javascript代码简写的几种常用方式汇总
2021/08/23 Javascript
MySQL的意向共享锁、意向排它锁和死锁
2022/07/15 MySQL