【翻译】Cython教程6_Cython如何进行编译

原创文章,转载请注明: 转载自勤奋的小青蛙
本文链接地址: 【翻译】Cython教程6_Cython如何进行编译

当完成一个pxd,pyx的文件编写之后,下一步就是需要编译Cython,生成pyd供Python调用。本节讲如何编译。如果需要了解非常详细的编译过程,可以参考:Cython Compile

Cython源文件名由模块的名称组成,后跟一个.pyx扩展名,例如名为primes的模块将有一个名为primes.pyx的源文件。

一旦你写了.pyx文件,有几种方法把它变成扩展模块。一种方法是使用Cython编译器手动编译,例如:

cython primes.pyx

这将产生一个名为primes.c的文件,然后需要使用C编译器编译使用您平台上适合的任何选项来生成扩展模块。对于这些选项,请查看官方的Python文档。

另一个,也许更好的方法是使用Cython提供的distutils扩展。这种方法的好处是它将给出平台特定的编译选项,像剥离的autotools一样。

Cython最基本的setup.py文件构成

Cython提供的distutils扩展允许您将.pyx文件直接传递到安装文件中的Extension构造函数。

如果您有一个单一的Cython文件要转换为已编译的扩展名,请以文件名example.pyx表示,相关的setup.py将是:

from distutils.core import setup
from Cython.Build import cythonize

setup(
    ext_modules = cythonize("example.pyx")
)

要了解setup.py,请更详细地查看官方的distutils文档。要编译当前目录中使用的扩展,请使用:

$ python setup.py build_ext --inplace

多个Cython源文件的编译

要自动编译多个Cython文件而不必明确列出所有这些文件,您可以使用glob模式:

setup(
    ext_modules = cythonize("package/*.pyx")
)

如果通过cythonize()传递它们,还可以在Extension对象中使用glob模式:

extensions = [Extension("*", ["*.pyx"])]

setup(
    ext_modules = cythonize(extensions)
)

最常用的就是setup.py,具体setup.py的使用方法,可以参考Python的官网:https://docs.python.org/3.4/distutils/index.html#distutils-index

原创文章,转载请注明: 转载自勤奋的小青蛙
本文链接地址: 【翻译】Cython教程6_Cython如何进行编译

文章的脚注信息由WordPress的wp-posturl插件自动生成



|2|left
打赏

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: