浅析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 相关文章推荐
21行Python代码实现拼写检查器
Jan 25 Python
Python基于sftp及rsa密匙实现远程拷贝文件的方法
Sep 21 Python
python爬取NUS-WIDE数据库图片
Oct 05 Python
Python中表达式x += y和x = x+y 的区别详解
Jun 20 Python
分享一下Python数据分析常用的8款工具
Apr 29 Python
Django migrations 默认目录修改的方法教程
Sep 28 Python
解决PyCharm import torch包失败的问题
Oct 13 Python
Python Flask异步发送邮件实现方法解析
Aug 01 Python
详解Python中Pyyaml模块的使用
Oct 08 Python
解决virtualenv -p python3 venv报错的问题
Feb 05 Python
基于PyTorch实现一个简单的CNN图像分类器
May 29 Python
Python+tkinter实现高清图片保存
Mar 13 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
《星际争霸》各版本雷兽特点图文解析 雷兽不同形态一览
2020/03/02 星际争霸
php下通过IP获取地理位置的代码(小偷程序)
2011/06/09 PHP
php实现购物车功能(上)
2020/07/23 PHP
PHP实现生成推广海报的方法详解
2018/03/14 PHP
javascript IE中的DOM ready应用技巧
2008/07/23 Javascript
仿校内登陆框,精美,给那些很厉害但是没有设计天才的程序员
2008/11/24 Javascript
分享8款优秀的 jQuery 加载动画和进度条插件
2012/10/24 Javascript
关于Jquery操作Cookie取值错误的解决方法
2013/08/26 Javascript
javascript实现动态侧边栏代码
2014/02/19 Javascript
jquery实现删除一个元素后面的所有元素功能
2015/12/21 Javascript
jQuery实现遮罩层登录对话框
2016/12/29 Javascript
Angular1.x复杂指令实例详解
2017/03/01 Javascript
Vue + Webpack + Vue-loader学习教程之功能介绍篇
2017/03/14 Javascript
javascript中mouseenter与mouseover的异同
2017/06/06 Javascript
nodejs密码加密中生成随机数的实例代码
2017/07/17 NodeJs
webpack实现一个行内样式px转vw的loader示例
2018/09/13 Javascript
函数式编程入门实践(一)
2019/04/20 Javascript
JavaScript实现随机点名器实例详解
2019/05/07 Javascript
JavaScript使用表单元素验证表单的示例代码
2019/08/20 Javascript
js 压缩图片的示例(只缩小体积,不更改图片尺寸)
2020/10/21 Javascript
[46:32]Fnatic vs OG 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
分析Python中设计模式之Decorator装饰器模式的要点
2016/03/02 Python
浅谈python抛出异常、自定义异常, 传递异常
2016/06/20 Python
Windows下的Jupyter Notebook 安装与自定义启动(图文详解)
2018/02/21 Python
python微信好友数据分析详解
2018/11/19 Python
北京泡泡网网络有限公司.net面试题
2012/07/17 面试题
sort命令的作用和用法
2013/08/25 面试题
小型女装店的创业计划书
2014/01/09 职场文书
商场主管竞聘书
2014/03/31 职场文书
爱与责任演讲稿
2014/05/20 职场文书
考试保密承诺书
2014/08/30 职场文书
公司人力资源管理制度
2015/08/05 职场文书
某学校的2019年度工作报告范本
2019/10/11 职场文书
开发一个封装iframe的vue组件
2021/03/29 Vue.js
React Fragment介绍与使用详解
2021/11/11 Javascript
redis 解决库存并发问题实现数量控制
2022/04/08 Redis