cython 试用

abloz 2010-01-24
2010-01-24

#

周海汉 /文

2010.1.24

1.安装

zhouhh@zhouhh-home:~$ cython
程序“cython”尚未安装。 您可以使用以下命令安装:
sudo apt-get install cython
cython: command not found
zhouhh@zhouhh-home:~$ sudo apt-get install cython

2.写测试代码:

zhouhh@zhouhh-home:~$ vi test.pyx


  1. def sayhello(char* str):
  2. if str == None:
  3. print ‘hello world’
  4. else:
  5. print str

def sayhello(char* str): if str == None: print ‘hello world’ else: print str

3.编译成C语言

zhouhh@zhouhh-home:~$ cython test.pyx

zhouhh@zhouhh-home:~$ ls test.c
test.c
test.c是由cython通过 test.pyx生成的。

  1. gcc编译成.o文件

直接执行gcc会出错,必须包含python目录。

zhouhh@zhouhh-home:~$ gcc test.c

test.c:4:20: error: Python.h: 没有该文件或目录
test.c:5:26: error: structmember.h: 没有该文件或目录
test.c:7:6: error: #error Python headers needed to compile C extensions, please install development version of Python.

zhouhh@zhouhh-home:~$ gcc -c -fPIC -I/usr/include/python2.6 test.c

-fPIC表示编译成共享库,-I后跟include的路径。

5.生成共享库

zhouhh@zhouhh-home:~$ gcc -shared test.o -o test.so

6.在python中引用共享库

zhouhh@zhouhh-home:~$ vi test.py

import test

test.sayhello(‘ni hao’)

7.执行

zhouhh@zhouhh-home:~$ python test.py
ni hao

8.疑问:

不知怎么传NULL指针给函数参数。

9.参考:

http://www.cython.org/

http://blog.csdn.net/lanphaday/archive/2009/09/17/4561611.aspx


如非注明转载, 均为原创. 本站遵循知识共享CC协议,转载请注明来源