如何在开发过程中构建 Python CFFI 模块?

Posted

技术标签:

【中文标题】如何在开发过程中构建 Python CFFI 模块?【英文标题】:How can I build Python CFFI modules during development? 【发布时间】:2015-08-29 15:55:33 【问题描述】:

在开发过程中构建 CFFI 模块的最佳做法是什么?

现在我正在使用 Makefile:

mylib/_ffi.so: my_lib/build_ffi.py
    python $<

然后测试我可以使用:

$ make && python test.py

但这似乎不是最理想的。有没有更好的方法在开发过程中构建 CFFI 模块?

【问题讨论】:

你可以在你的test.py中说if os.system("make") != 0: raise Exception 【参考方案1】:

如果项目正在使用 setuptools,python setup.py develop 似乎会就地构建库:

$ python setup.py develop
...
Finished processing dependencies for my-lib==0.1
$ ls my_lib/
_ffi.so
...

但似乎没有 make clean 等价物(setup.py clean 只清理 build/ 目录),因此不太理想。

【讨论】:

【参考方案2】:

不是一个完整的答案,但对“次优”解决方案的建议改进是将 pytest 的运行添加到 make 文件中,如下所示:

all: mylib/_ffi.so
    /usr/bin/python test.py

这将允许您只运行 make

【讨论】:

以上是关于如何在开发过程中构建 Python CFFI 模块?的主要内容,如果未能解决你的问题,请参考以下文章

将标志添加到 cffi 编译过程

如何使用 cffi 在 C 中嵌入一个返回字符串的 Python 函数?

为啥 cffi 比 numpy 快这么多?

从 aws-lambda 导入 pysftp 时如何修复导入错误“没有名为 '_cffi_backend' 的模块”

在 Python CFFI 中声明包含 time_t 字段的结构

如何配置 python cffi 库以使用 mingw?