我需要对scikit-learn进行一些修改,包括对cython代码的更改。
我之前没有使用过cython,所以可以做一些指导 - 到目前为止,我已经在python virtualenv中获得了所有的依赖关系,克隆并安装了sklearn git。
现在,修改.pyx文件的好工作流程是什么?我应该进行修改然后重新安装以查看效果吗?或者改为构建?
有没有办法避免重新编译所有未更改的内容?
我听说过import pyximport; pyximport.install()
但是对我来说这会导致sklearn编译错误 - >有没有办法确保它使用与成功运行的Makefile相同的选项?
总的来说,我正在寻找有关如何修改大型cython项目的指导,而无需花费数十年时间等待未修改的文件重新编译。
答案 0 :(得分:3)
你可以简单地跑,
python setup.py develop
每次修改后。与install
命令不同,它不会复制任何文件,只会创建指向工作目录的符号链接。它还将自动构建所有必要的扩展,相当于
python setup.py build_ext --inplace
如果更改项目中的Cython文件,则下次运行develop
命令时,只会重新编译这些文件。
pyximport
模块非常适合独立的Cython功能。但是,对于包含多个文件的更复杂项目,上述方法可能更简单。