Cython是一个非常好的python扩展,用于把python模块编译为C语言模块再编译为动态链接库,这样既发挥了python的高效开发,又利用了C语言的执行效率。
在Windows上安装Cython的步骤:
1 从http://cython.org下载软件包:Cython-0.XY.Z.zip
解压到一个目录,如D:\Cython-0.XY.Z
2 从开始菜单里打开Visual Studio Command Prompt
敲入如下命令:
D:
cd Cython-0.XY.Z
python setup.py install
命令执行完后就会把cython安装到python的安装目录下
如果上述命令提示:“ error: Unable to find vcvarsall.bat
”这也常见于安装python的其它第三方部件时。解决办法:
命令行下执行 SET VS100COMNTOOLS=%VS120COMNTOOLS%
这是因为python 3.4是VC10.0编译的;而当前机器安装了VC12.0(即VC2013)。
示例:
创建helloworld.pyx(必须是扩展名pyx,否则cython不认), 内容如下:
cdef externfrom"stdio.h":
extern int printf(const char *format, ...)
defSayHello():
printf("hello,world\n")
编译该文件最方便的是利用python的Distutils,先在helloworld目录下创建Setup.py,内容如下:
from distutils.core import setup
from distutils.extension import Extension
from Cython.Build import cythonize
setup(
name = 'helloworld',
ext_modules=cythonize([
Extension("helloworld", ["helloworld.pyx"]),
]),
)
编译:
python Setup.py build
安装:
python Setup.py install
安装后,会将在当前目录的 build/lib.???
子目录下生成的helloworld.pyd拷贝到Lib/site-packages
注:
有时只是希望测试一下,并不希望安装,这时可以把build/lib.???目录下的helloworld.pyd拷贝到当前目录或者在import
helloworld前执行脚本:import sys; sys.path.append(pathof/helloworld.pyd)
测试:
>>>import helloworld
>>>helloworld.SayHello()
hello,world
另一种方法是可以写Makefile进行编译。写Makefile的好处就是可以知道编译的实质:
ALL :helloworld.pyd
helloworld.c : helloworld.pyx
cython -o helloworld.c helloworld.pyx
helloworld.obj :helloworld.c
cl -c -Id:\python27\include helloworld.c
helloworld.pyd :helloworld.obj
link /DLL /LIBPATH:d:\python27\libshelloworld.obj /OUT:helloworld.pyd
执行命令:
nmake会在当前目录下生成helloworld.pyd
linux下的Makefile和Windows下的类似,只是编译器不同而己,另外,生成的文件名为:helloworld.so,而不是helloworld.pyd
测试:
>>>import helloworld
>>>helloworld.SayHello()
hello,world
(完)
本文介绍了在Windows上安装和使用Cython的详细步骤,包括下载Cython软件包,通过Visual Studio Command Prompt安装,解决vcvarsall.bat错误,创建和编译pyx文件,利用Distutils或Makefile进行构建,以及测试编译后的动态链接库。

1万+

被折叠的 条评论
为什么被折叠?



