浅析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实现从web抓取文档的方法
Sep 26 Python
将Django使用的数据库从MySQL迁移到PostgreSQL的教程
Apr 11 Python
python中zip和unzip数据的方法
May 27 Python
Python 读写文件和file对象的方法(推荐)
Sep 12 Python
Python字符串通过'+'和join函数拼接新字符串的性能测试比较
Mar 05 Python
Django框架自定义session处理操作示例
May 27 Python
深入浅析Python 中的sklearn模型选择
Oct 12 Python
python读取ini配置的类封装代码实例
Jan 08 Python
Python爬虫库BeautifulSoup的介绍与简单使用实例
Jan 25 Python
SpringBoot实现登录注册常见问题解决方案
Mar 04 Python
python生成xml时规定dtd实例方法
Sep 21 Python
Python编解码问题及文本文件处理方法详解
Jun 20 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
要会喝咖啡也要会知道咖啡豆
2021/03/03 咖啡文化
ADODB的数据库封包程序库
2006/12/31 PHP
PHP CKEditor 上传图片实现代码
2009/11/06 PHP
破解图片防盗链的代码(asp/php)测试通过
2010/07/02 PHP
PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)
2016/12/14 PHP
phpStorm+XDebug+chrome 配置详解
2019/04/01 PHP
ie和firefox中img对象区别的困惑
2006/12/27 Javascript
某人初学javascript的时候写的学习笔记
2010/12/30 Javascript
jQuery getJSON()+.ashx 实现分页(改进版)
2013/03/28 Javascript
jquery淡化版banner异步图片文字效果切换图片特效
2014/04/08 Javascript
JavaScript字符串对象toUpperCase方法入门实例(用于把字母转换为大写)
2014/10/17 Javascript
Jquery实现顶部弹出框特效
2015/08/08 Javascript
简单谈谈javascript Date类型
2015/09/06 Javascript
理解javascript中Map代替循环
2016/02/26 Javascript
修复jQuery tablesorter无法正确排序的bug(加千分位数字后)
2016/03/30 Javascript
bootstrap响应式表格实例详解
2017/05/15 Javascript
操作按钮悬浮固定在微信小程序底部的实现代码
2019/08/02 Javascript
vue中音频wavesurfer.js的使用方法
2020/02/20 Vue.js
JS实现网页端猜数字小游戏
2020/03/06 Javascript
JavaScript直接调用函数与call调用的区别实例分析
2020/05/22 Javascript
解决vue 使用axios.all()方法发起多个请求控制台报错的问题
2020/11/09 Javascript
python实现的一个火车票转让信息采集器
2014/07/09 Python
Python打印斐波拉契数列实例
2015/07/07 Python
详解JavaScript编程中的window与window.screen对象
2015/10/26 Python
python实现文本文件合并
2015/12/29 Python
Kali Linux安装ipython2 和 ipython3的方法
2019/07/11 Python
django 基于中间件实现限制ip频繁访问过程详解
2019/07/30 Python
详解Python并发编程之创建多线程的几种方法
2019/08/23 Python
浅谈Python type的使用
2019/11/19 Python
如何获取Python简单for循环索引
2019/11/21 Python
HTML5触摸事件演化tap事件介绍
2016/03/25 HTML / CSS
应届毕业生专业个人求职自荐信格式
2013/11/20 职场文书
农场厂长岗位职责
2013/12/28 职场文书
学校学习雷锋活动总结
2014/07/03 职场文书
关于国庆节的演讲稿
2014/09/05 职场文书
2014年党支部书记工作总结
2014/12/04 职场文书