我一直在研究在Python中使用C ++代码的主题,但是还没有找到一种通用的干净灵活的方法来在Python包中包装C ++库。
问题在于是否可以使用现有的复杂C ++库来创建常规 Python库,可以像本机Python库一样调用它,例如NumPy或SciPy。如果是,任何参考将非常感谢。如果有可用的示例/教程 - 它会更有用。
由于
答案 0 :(得分:3)
有许多方法。 Boost Python,http://www.boost.org/doc/libs/1_57_0/libs/python/doc/,是非常特定于C ++的,并且利用C ++模板来处理(就像所有的Boost! - )。部分更通用(更少C ++特定)的方法包括Python扩展的手动C编码,每https://docs.python.org/3/extending/extending.html; SWIG,每http://www.swig.org/Doc1.3/SWIGPlus.html; Cython,每http://docs.cython.org/src/userguide/wrapping_CPlusPlus.html; ......毫无疑问,其他人我还没有遇到过。
这么多强大,积极维护的替代品的存在,暗示这里没有“一刀切”!如果你是模板向导我打赌你会发誓Boost;如果你不是,我想你更有可能发誓 - 依此类推。等等。
就个人而言,当我决定使用某个C ++库(和性能)做大量的Python工作时,我倾向于最终使用Cython(甚至只是ctypes
! - )进行实验,手动扩展编码是至关重要的) - 和SWIG在工作,因为这是那里的标准。没有认真使用Boost太长时间了 - 当我的业余时间变得更加丰富时,刷新它就会出现在我不那么小的待办事项清单上......: - )。