cython编译python windows_【python】在Windows上安装Cython

本文介绍了在Windows上安装和使用Cython的详细步骤,包括下载Cython软件包,通过Visual Studio Command Prompt安装,解决vcvarsall.bat错误,创建和编译pyx文件,利用Distutils或Makefile进行构建,以及测试编译后的动态链接库。
摘要由CSDN通过智能技术生成

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

(完)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值