建筑Cython代码

与Python不同,Cython代码必须编译。这分两个阶段进行:

  • A类.pyx格式.py格式文件由Cython编译为.c类文件,包含Python扩展模块的代码。

  • 这个.c类文件由C编译器编译为.所以文件(或.pyd码在Windows上),可以进口-直接写入Python会话。设置工具负责这部分。尽管在某些情况下,Cython可以为你打电话。

要全面了解Cython+setuptools构建过程,人们可能想了解更多分发Python模块.

有几种方法可以构建Cython代码:

  • 编写setuptools设置.py。这是正常和推荐的方式。

  • 运行赛马命令行实用程序。这是一个很好的方法将单个Cython源文件直接编译为扩展名。可以“就地”构建源文件(以便创建扩展模块源文件旁边,准备导入)赛马 -我 文件名.pyx.

  • 使用皮克西姆波特,导入Cython.pyx格式文件,就好像它们.py格式文件(使用setuptools在后台编译和构建)。此方法比编写设置.py,但不是很灵活。所以你需要写一个设置.py例如,如果您需要某些编译选项。

  • 运行赛马命令行实用程序手动生成.c类文件来自.pyx格式文件,然后手动编译.c类文件到共享适合从Python导入的对象库或DLL。(这些手动步骤主要用于调试和实验。)

  • 使用[朱庇特]笔记本或[贤人]笔记本,这两者都允许内联Cython代码。这是开始编写Cython代码并运行它的最简单方法。

目前,使用setuptools是构建和分发Cython文件的最常见方式。其他方法在源文件和编译参考手册的第节。

使用setuptools构建Cython模块

想象一下,在一个文件中有一个简单的“hello world”脚本你好,皮克斯:

定义 说你好(名称):
    打印((f)“你好{name}!”)

以下可能是相应的设置.py脚本:

 设置工具 进口 设置
 赛马拉松。生成 进口 赛马

设置(
    名称=“Hello world应用程序”,
    外部模块(_M)=赛马(“你好,皮克斯”),
)

要生成,请运行蟒蛇 设置.py 内置_扩展 --就地。然后简单地启动Python会话并执行以下操作 你好 进口 说你好根据需要使用导入的函数。

使用Jupyter笔记本

Cython可以从web浏览器中方便地交互使用通过Jupyter笔记本。要将Jupyter笔记本安装到virtualenv中,使用pip:

(供应商)$ pip(点阵) 安装 木星(静脉)$ 木星 笔记本

要支持Cython编译,请按照安装指南并加载赛马拉松Jupyter笔记本中的扩展:

%加载文本(_E) 赛马拉松

然后,在单元格前面加上%%赛马标记编译它

%%赛马

: 赛马.整数 = 0
对于  在里面 范围(10):
     += 
打印()

您可以通过传递--注释选项:

%%赛马 --注释
...
../../_图像/jupyter.png

有关%%赛马魔法,看使用Jupyter笔记本进行编译.

使用Sage笔记本

../../_图像/sage.png

对于Sage数学发行版的用户,Sage笔记本允许只需键入即可透明地编辑和编译Cython代码%赛马并对其求值。变量和导入到运行会话中的Cython单元中定义的函数。