python - 从 C++ 库创建 Python 包

标签 python c++ package

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

问题是是否可以使用现有的复杂 C++ 库来创建一个常规 Python 库,它可以像 NumPy 或 SciPy 等原生 Python 库一样被调用。如果是,任何引用资料将不胜感激。如果有可用的示例/教程 - 它会更有用。

谢谢

最佳答案

方法有很多种。提升 Python,http://www.boost.org/doc/libs/1_57_0/libs/python/doc/ , 是非常特定于 C++ 的,并且充分利用了 C++ 模板(就像所有的 Boost!-)。根据 https://docs.python.org/3/extending/extending.html,部分更通用(不太特定于 C++)的方法包括 Python 扩展的手动 C 编码; 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 —— 当我的空闲时间变得更多时,我的待办事项 list 上会更新它......:-)。

关于python - 从 C++ 库创建 Python 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28359281/

相关文章:

python - 查询较少的父对象及其子对象列表

Python 正则表达式模式/函数不从我的数据字符串中检索数据

python - 如何从 Azure blob 存储将 parquet 文件读入 pandas

python - TFLearn 对每个预测产生相同的结果

C++:打印出集合容器中的 vector 元素

Scala导入多个包

c++ - 如何获取物理和逻辑磁盘列表?

c++ - 十进制到二进制转换器 C++?

python - TypeError : unbound method __init__() . ...在重新打包后的单元测试期间

java - java中当前包关键字