使用Cython使用C ++共享对象库扩展Python

时间:2011-01-29 19:03:51

标签: c++ python cython

所以基本上,我试图在Python中编写自己的GUI包装器(使用GTK +,但我不认为这是相关的)用于用C ++编写并由用户编译到共享对象文件中的API(在linux [* nix?我不太确定它在macs上是如何工作的])或dll(在windows中)你应该能够引用自己使用API​​。经过一段时间的Cython尝试,我能够编写自己的扩展,只要它只是一个文件,但我在网上找不到任何关于使用多个文件的东西(因为这显然是,因为任何真正的项目将...编译成单个.so,可以导入到Python项目中。我是否需要手动完成并使用Cython并为每个.cpp文件创建.pyx文件(其中有很多),将它们编译成cpp文件然后编辑然后使用make文件将它们编译到.so文件中,还是有更自动化的方式? (p.s.我尝试用Cython单独编译每一个,但它似乎不喜欢“#include< path / file>”符号,因此无法编译大部分文件)

其他信息:我已经能够使用ctypes与库交互,但是感觉非常hackish和非pythonic,我想要获得更多的Cython体验,因为它似乎是非常有用的资产。

1 个答案:

答案 0 :(得分:0)

你可以做一个名为“yourmodule.pyx”的文件,将所有其他文件重命名为pxi,然后执行:

include "other1.pxi"
include "other2.pxi"

然后你将只有一个文件进行cythonize并编译:yourmodule.pyx。