构建Hello World程序,依循编程语言传统的介绍方式,我们的Cython之旅将从一个Hello World范例程序开始。不同于Python,我们需要对Cython代码进行编译。我们将首先编写一个.pyx文件,再由该文件生成C语言代码,然后对.c文件进行编译,最后把编译后生成的模块引入Python程序。
具体步骤
下面将具体介绍怎样构建一个Cython版本的Hello World程序。
- 编写hello.pyx文件。
首先需要编写一段相当简单的代码,用来打印“Hello World”。这是一段标准的Python代码,只是其所在文件的扩展名是pyx。
def say_hello():
print "Hello World!"
- 编写distutils setup.py脚本。
需要创建一个名为setup.py的文件,用来帮助我们构建Cython代码。
from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext
ext_modules = [Extension("hello", ["hello.pyx"])]
setup(
name = 'Hello world app',
cmdclass = {'build_ext': build_ext},
ext_modules = ext_modules
)
如你所见,我们需要在这个文件中指明上一步骤编写的Cython程序名称并给应用一个名字。
- 构建扩展模块。
使用如下命令构建。
python setup.py build_ext --inplace
这将首先生成C语言代码,再针对所在平台对其进行编译后,产生如下输出结果。
running build_ext
cythoning hello.pyx to hello.c
building 'hello' extension
creating build
现在可以使用如下语句,在Python程序中引入刚刚生成的模块。
from hello import say_hello
攻略小结
本章我们介绍了一个传统的Hello World范例。Cython是编译型的语言,需要对Cython代码进行编译。我们编写了一个.pyx文件,其中包含了打印Hello World的相关代码。我们也编写了一个setup.py文件,用来生成和构建C语言程序。