从 C++ 库创建一个 Python 包
Create a Python package from C++ library
我一直在研究在 Python 中使用 C++ 代码的主题,但还没有找到一种通用的干净灵活的方法来将 C++ 库包装在 Python 包中。
问题是是否可以使用现有的复杂 C++ 库来创建一个 常规 Python 库,可以像本地 Python 一样调用库,例如 NumPy 或 SciPy。如果是,任何参考资料将不胜感激。如果有 examples/tutorials 可用 - 它会更有用。
谢谢
有很多很多方法。提升 Python, http://www.boost.org/doc/libs/1_57_0/libs/python/doc/ , is very C++-specific and exploits C++ templates to the hilt (like all of Boost!-). Part of more general (less C++ specific) approaches include manual C coding of Python extensions, per https://docs.python.org/3/extending/extending.html ; SWIG, per http://www.swig.org/Doc1.3/SWIGPlus.html ; Cython, per http://docs.cython.org/src/userguide/wrapping_CPlusPlus.html ; ...毫无疑问,我还没有遇到其他人。
这么多强大的、积极维护的替代品的存在,暗示这里没有 "one size fits all"!如果您是模板向导,我敢打赌您会发誓使用 Boost;如果你不是,我猜你更有可能发誓 at 它 -- 等等,等等。
就我个人而言,当我决定要使用某些 C++ 库(性能至关重要)——还有 SWIG 在工作,因为那是那里的标准。太久没有认真使用 Boost -- 当我的空闲时间变得更多时,我的待办事项清单上会更新它...:-)。
我一直在研究在 Python 中使用 C++ 代码的主题,但还没有找到一种通用的干净灵活的方法来将 C++ 库包装在 Python 包中。
问题是是否可以使用现有的复杂 C++ 库来创建一个 常规 Python 库,可以像本地 Python 一样调用库,例如 NumPy 或 SciPy。如果是,任何参考资料将不胜感激。如果有 examples/tutorials 可用 - 它会更有用。
谢谢
有很多很多方法。提升 Python, http://www.boost.org/doc/libs/1_57_0/libs/python/doc/ , is very C++-specific and exploits C++ templates to the hilt (like all of Boost!-). Part of more general (less C++ specific) approaches include manual C coding of Python extensions, per https://docs.python.org/3/extending/extending.html ; SWIG, per http://www.swig.org/Doc1.3/SWIGPlus.html ; Cython, per http://docs.cython.org/src/userguide/wrapping_CPlusPlus.html ; ...毫无疑问,我还没有遇到其他人。
这么多强大的、积极维护的替代品的存在,暗示这里没有 "one size fits all"!如果您是模板向导,我敢打赌您会发誓使用 Boost;如果你不是,我猜你更有可能发誓 at 它 -- 等等,等等。
就我个人而言,当我决定要使用某些 C++ 库(性能至关重要)——还有 SWIG 在工作,因为那是那里的标准。太久没有认真使用 Boost -- 当我的空闲时间变得更多时,我的待办事项清单上会更新它...:-)。