Chinaunix首页 | 论坛 | 博客
  • 博客访问: 233595
  • 博文数量: 36
  • 博客积分: 2025
  • 博客等级: 大尉
  • 技术积分: 370
  • 用 户 组: 普通用户
  • 注册时间: 2007-03-22 20:55
文章分类

全部博文(36)

文章存档

2008年(4)

2007年(32)

我的朋友

分类: Python/Ruby

2007-03-22 21:54:00

以下是我在开发一个应用中集成python脚本引擎的过程中所遇到的一些入门级问题,稍后再整理一些比较完整的关于python扩展与嵌入的日志。

1、如何在宿主应用中注册module?可在Py_Initialize之前调用PyImport_AppendInittab来注册,也可在Py_Initialize之后直接调用注册函数。

2、如何添加宿主应用脚本的路径到python搜索路径?在Py_Initialize之后通过PySys_GetObject("path")得到sys.path,然后再通过PyList_Insert加入宿主应用的脚本路径。

3、 如何调用python模块中的函数?通过PyImport_ImportModule得到module,然后再通过PyModule_GetDict从 module中得到dict,再通过PyDict_GetItemString得到函数对象,最后通过PyObject_CallObject或其它 PyObject_Call系列函数调用,当然调用之前最好用PyCallable_Check检查,另外就是dict、func都属于Borrowed reference,因此不需要Py_DECREF或Py_XDECREF。

4、所有的wrapper函数都应该返回PyObject实 例指针,即使在python中调用的时候并不需要返回值,但仍需要返回Py_None,相当于C/C++中的void,Py_INCREF (Py_None); return Py_None;当然也可以用宏Py_RETURN_NONE来代替。
阅读(2015) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~