linux 下C调用Python 模块
2016-01-12 13:43
441 查看
原文地址:http://blog.chinaunix.net/uid-22920230-id-3418169.html
最近做一个移植项目, 用到C调用Python, 在网上搜了好多资料,但是发现按照上面介绍的一步一步来, 根本行不通,最后还是根据系统报出的错误,进行调试才成功, 所以感觉很有必要做下记录。
下面以main.c 调用 hellWorld.py 函数为例进行说明。
helloWorld.py 的内容很简单只是定义了hello函数然后输出“Hello World”
main.c 函数也比较简单,主要是初始化python,以及导入python的模块等
里面的Python_Initialize()主要是初始化python解释器。
Py_SimpleString("import sys")相当于在python中的import sys语句。
Py_SimpleString("sys.path.append('./')")是将搜索路径设置为当前目录。
Py_ImportModule("helloWorld")是利用导入文件函数将helloWorld.py函数导入。
PyObject_GetAttrString(pModule, "hello")是在pyton引用模块helloWorld.py中查找hello函数。
接着调用PyEval_CallObject(pFunc, NULL)调用hello函数。
最后是清理python环境释放资源。
在写好了helloWorld.py和main.c函数后就得写Makefile函数了,Makefile函数代码如下:
make后生成main,./main运行结果:
结果打印出了helloWorld.py中的数据, 说明C调用Python成功!
最近做一个移植项目, 用到C调用Python, 在网上搜了好多资料,但是发现按照上面介绍的一步一步来, 根本行不通,最后还是根据系统报出的错误,进行调试才成功, 所以感觉很有必要做下记录。
下面以main.c 调用 hellWorld.py 函数为例进行说明。
helloWorld.py 的内容很简单只是定义了hello函数然后输出“Hello World”
main.c 函数也比较简单,主要是初始化python,以及导入python的模块等
里面的Python_Initialize()主要是初始化python解释器。
Py_SimpleString("import sys")相当于在python中的import sys语句。
Py_SimpleString("sys.path.append('./')")是将搜索路径设置为当前目录。
Py_ImportModule("helloWorld")是利用导入文件函数将helloWorld.py函数导入。
PyObject_GetAttrString(pModule, "hello")是在pyton引用模块helloWorld.py中查找hello函数。
接着调用PyEval_CallObject(pFunc, NULL)调用hello函数。
最后是清理python环境释放资源。
在写好了helloWorld.py和main.c函数后就得写Makefile函数了,Makefile函数代码如下:
make后生成main,./main运行结果:
结果打印出了helloWorld.py中的数据, 说明C调用Python成功!
相关文章推荐
- linux Centos6.5 安装 jdk1.6
- C语言-LINUX线程
- C语言-LINUX文件
- C语言-LINUX进程
- C语言-LINUX导学
- C语言-LINUX-EPOLL
- mac下swoole安装步骤
- 字符编解码的故事(ASCII,ANSI,Unicode,Utf-8区别)
- the shutdown command in linux for shutdown in time or reboot
- some package command in linux (ubuntu) zip/ tar/ tar.gz/ tar.bz2
- manage .deb package in linux (ubuntu) dpkg
- find the install path of some software in linux (ubuntu)
- linux command solution for problems
- RegExp and classfier used in part-of-speech(POS) tagging
- install android studio in ubuntu linux
- setup cluster -- ssh to each other with no key ssh免密钥登陆配置
- set up spark cluster -- create VM
- spark standalone mode
- Spark 中算子功能与分类介绍
- Centos7操作系统下修改yum源的方法