浅析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处理中文编码和判断编码示例
Feb 26 Python
详解Python的Django框架中的Cookie相关处理
Jul 22 Python
python下载图片实现方法(超简单)
Jul 21 Python
实例讲解Python爬取网页数据
Jul 08 Python
Python爬虫爬取新浪微博内容示例【基于代理IP】
Aug 03 Python
Python线程下使用锁的技巧分享
Sep 13 Python
Python 经典面试题 21 道【不可错过】
Sep 21 Python
Python机器学习之scikit-learn库中KNN算法的封装与使用方法
Dec 14 Python
Python跑循环时内存泄露的解决方法
Jan 13 Python
Pytorch 实现数据集自定义读取
Jan 18 Python
django rest framework serializers序列化实例
May 13 Python
PHP基于phpqrcode类库生成二维码过程解析
May 28 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/11/23 PHP
Nigma vs AM BO3 第一场2.13
2021/03/10 DOTA
动态载入/删除/更新外部 JavaScript/Css 文件的代码
2010/07/03 Javascript
当某个文本框成为焦点时即清除文本框内容
2014/04/28 Javascript
JQuery替换DOM节点的方法
2015/06/11 Javascript
jQuery实现指定内容滚动同时左侧或其它地方不滚动的方法
2015/08/08 Javascript
JavaScript  cookie 跨域访问之广告推广
2016/04/20 Javascript
Bootstrap基本组件学习笔记之缩略图(13)
2016/12/08 Javascript
jQuery EasyUI 页面加载等待及页面等待层
2017/02/06 Javascript
jQuery+ajax实现局部刷新的两种方法
2017/06/08 jQuery
jQuery Form插件使用详解_动力节点Java学院整理
2017/07/17 jQuery
基于node.js之调试器详解
2017/08/22 Javascript
vuejs中监听窗口关闭和窗口刷新事件的方法
2018/09/21 Javascript
在layui.use 中自定义 function 的正确方法
2019/09/16 Javascript
python实现的防DDoS脚本
2011/02/08 Python
Ubuntu 16.04 LTS中源码安装Python 3.6.0的方法教程
2016/12/27 Python
python topN 取最大的N个数或最小的N个数方法
2018/06/04 Python
python实现多进程代码示例
2018/10/31 Python
基于Tensorflow高阶读写教程
2020/02/10 Python
python中安装django模块的方法
2020/03/12 Python
python使用PIL剪切和拼接图片
2020/03/23 Python
使用Pycharm分段执行代码
2020/04/15 Python
python中re模块知识点总结
2021/01/17 Python
CSS3的first-child选择器实战攻略
2016/04/28 HTML / CSS
HTML5和CSS3实例教程总结(推荐)
2016/07/18 HTML / CSS
HTML5实现无刷新修改URL的方法
2019/11/14 HTML / CSS
Hello Molly美国:女性时尚在线
2019/08/26 全球购物
JACK & JONES荷兰官网:男士服装和鞋子
2021/03/07 全球购物
如何在Cookie里面保存Unicode和国际化字符
2013/05/25 面试题
优秀学生干部个人事迹材料
2014/06/02 职场文书
明星员工获奖感言
2014/08/14 职场文书
共产党员批评与自我批评
2014/10/15 职场文书
发票退票证明
2015/06/24 职场文书
2016年大学生就业指导课心得体会
2015/10/09 职场文书
详解运行Python的神器Jupyter Notebook
2021/06/03 Python
sql通过日期判断年龄函数的示例代码
2021/07/16 SQL Server