2015-02-06 52 views
0

我一直在研究在Python中使用C++代码的主题,但还没有找到一种通用的干净灵活的方式来将C++库封装到Python包中。从C++库创建Python包

问题是,是否可以使用现有的复杂C++库创建一个Python库,该库可以像本地Python库一样调用,如NumPy或SciPy。如果是的话,任何参考将非常感谢。如果有可用的示例/教程 - 它会更有用。

感谢

+0

您应该阅读[用C和C++扩展Python]的官方文档(https://docs.python.org/3/extending/extending.html)。 – Rufflewind 2015-02-06 05:44:31

回答

2

有很多,方法很多。 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发誓;如果你不是,我想你更可能发誓它 - 等等,等等。我个人倾向于最终使用Cython(或者甚至只是​​!)进行试验,手动扩展编码,当我决定使用某个C++库来完成很多Python工作(并且性能至关重要)时, - 和SWIG在工作,因为那是标准。没有认真地使用Boost太久 - 对我的不太小的待办事项列表进行了更新,因为当我的业余时间变得更加丰富... :-)。

+0

谢谢,亚历克斯伟大的指针! – 2015-02-07 02:41:38