Pyhon脚本解释器在Windows应用中的实际操作方法

开发 后端
如果你想了解在Windows应用中如何嵌入Python脚本解释器的相关实际操作方案时,下面的文章你就可以点击观看了,希望你会从中学会很多的东西。

你对Python脚本解释器的实际相关应用感兴趣吗?而今天我们的文章主要向你介绍的是在Windows应用中如何嵌入Python脚本解释器,以及实际操作的六种方案的具体介绍。以下是文章内容的具体介绍。

下面文件名中出现的'##'是被缩写的版本号.举例来说,Python 2.1.1,##将会被21替换. 在Windows应用中嵌入Python脚本解释器的方法可以汇总如下:

1.不要直接把Python建立在你的.exe文件中。在Windows中,Python应该以DLL的形式引入,从而可以使用Python的 DLL's。 (第一个要点)。应该连接到Python##.dll;你可以静态或动态地连接到Python。静态意味着要连接python15.lib。缺点是当Python##.dll不存在的时候你的应用程序将不能运行. 。

 一般提示: Python##.lib是python##.dll对应的所谓"引入库",它仅仅为连接定义符号。 Borland提示:首先使用Coff2Omf.exe把Python##.lib转换成OMF格式。#t#

连接简化了连接选项,因为一切都发生在运行时。你的代码必须用Windows函数LoadLibraryEx() 载入Python##.dll。你的代码也必须使用Windows函数GetProcAddress()获得指针,从而可以用它来操作 Python##.dll中的存取例程和数据(Python's C API's)。宏能够使那些指针透明地使用在任何调用Python's C API的C代码中。

2. 如果你使用SWIG(简化封装和接口生成器), 将能够容易地生成Python"扩充模块",它使得Python可以使用应用程序的数据和方法。 SWIG几乎会为你处理所有蹩脚的细节。结果是C代码连入你的 .exe 文件之内,你不必生成DLL文件,这样简化了联接。

3. SWIG将会产生一个初始化函数(C函数),它的名字和扩展模块的名字有关。 举例来说,如果模块的名是leo,init函数将会被称为initleo() 。如果你使用SWIG shadow类,init函数将会被称为initleoc(),这个初始化通常隐藏了shadow类使用的 helper 类。 你能在第2步连接C代码进入你的.exe文件的原因是这个初始化函数等于把模块引入Python中(第二个要点)。

 4. 简而言之,你能使用下面的代码初始化Python脚本解释器引人你的扩充模块。

  1. #include "python.h"   
  2. ...   
  3. Py_Initialize(); // Initialize Python.   
  4. initmyAppc(); // Initialize (import) the helper class.   
  5. PyRun_SimpleString("import myApp") ; // Import the shadow class.  

5. 如果你使用了除MSVC以外的编译器,可能会有两个问题出现,编译器用来构建Py_None 是和python##.dll中一个叫_Py_NoneStruct的复杂数据结构相关的宏,同样,这段代码也不能在多编译器环境工作,用下面的代码代替:

  1. return Py_BuildValue("");  

它可能是用SWIG的%typemap命令自动地改变的,虽然我还没有做这方面的工作。(我完全是SWIG新手)。

6. 使用Python shell脚本在你的Windows app的内部 搭建Python解释器窗口不是好的想法,因为产生的窗 

  1. Python##.dll.  

问题 1: 基于FILE*的所谓 "非常高层"的函数在多编译器环境中将不能正常工作;每个编译器对待FILE结构会有所不同。从实现的角度看他们是非常低层次的函数。

问题 2: 当生成对void函数的封装的时候 ,SWIG产生下面的代码:

  1. Python##.dll.  

口将会独立于你的app的窗口系统。然而,你(或 wxPythonWindow类)应该创建一个"本地的"解释器窗口。它容易连接到到Python脚本解释器。你可以重定向 Python的输入/输出到任何支持读写的对象,这样你全部的需要就是包含read()和write()方法的对象了。

【编辑推荐】

  1. Python创建mysql的数据库连接池实际操作方案简介
  2. Python 多线程的单cpu与cpu上的多线程的区别
  3. Python 变量类型的代码示例
  4. Python 程序流程控制条件代码的示例
  5. python语法入门中导入import与from时的代码示例
责任编辑:佚名 来源: 互联网
相关推荐

2009-12-30 15:53:28

Silverlight

2010-04-13 18:03:33

Oracle服务

2010-09-30 10:41:29

2010-03-05 13:48:24

Python for

2010-02-03 10:23:47

C++操作符重载

2010-05-31 18:16:48

MySQL数据库备份

2010-01-07 10:46:27

VB.NET Sock

2010-01-04 16:50:04

Silverlight

2010-04-19 16:28:04

Oracle导出

2010-07-27 13:16:50

DB2使用所有内存

2010-09-07 13:04:20

DB2数据库

2010-08-06 11:21:45

IBM DB2 数据复

2010-08-13 10:13:15

DB2数据复制

2010-03-16 10:00:37

Python函数

2010-03-17 13:14:00

Python Libr

2010-05-19 11:25:46

MySQL触发器

2010-08-09 13:43:37

DB2数据迁移

2010-05-18 09:31:05

MySQL修改表

2010-05-07 12:19:38

Oracle删除用户表

2010-03-25 17:28:41

Python配置
点赞
收藏

51CTO技术栈公众号