修改大型cython项目的工作流程

Workflow for modifying large cython projects

我需要对 scikit-learn 进行一些修改,包括对 cython 代码的更改。

我之前没有在 cython 上工作过,所以需要一些指导 - 到目前为止,我已经将所有依赖项放入 python virtualenv,并克隆并安装了 sklearn git .

现在,修改 .pyx 文件的良好工作流程是什么?是不是要修改然后重新安装才能看到效果?或者改建?

有什么方法可以避免重新编译所有未更改的内容吗?

我听说过 import pyximport; pyximport.install() 但对我来说这会引发 sklearn 的编译错误 -> 有没有办法确保它使用与成功运行的 Makefile 相同的选项?

总的来说,我正在寻找有关如何修改大型 cython 项目的指导,而无需花费数十年等待未修改的文件重新编译。

你可以简单地 运行,

python setup.py develop

每次修改后。与 install 命令不同,这不会复制任何文件,只会创建一个符号 link 到工作目录。它还会自动构建所有必要的扩展,相当于

python setup.py build_ext --inplace

如果您更改项目中的 Cython 文件,则下次您 运行 develop 命令时只会重新编译这些文件。

pyximport 模块非常适合独立的 Cython 函数。但是,对于具有多个文件的更复杂的项目,上述方法可能会更简单。