PyBind11实现Python调用C++
我曾经写过一篇SWIG实现Python调用C++的文章,SWIG是一个非常好用的通用工具,可以实现很多语言间的互通,不过最近我发现一个专门为Python和C++设计的库,PyBind11,AI领域貌似更喜欢这个库
PyBind11是一个非常轻量的纯头文件库,可以看作对Boost.Python的简化模仿,这个库要求至少使用C++11、Python 3.6,使用条件相对苛刻,但说实话,对于新项目这个版本要求并不过分
PyBind11有很多优点,我个人比较喜欢将项目嵌入到CMake项目,并使用pip install
进行安装
嵌入到CMake项目
1. submodule
首先将PyBind11库作为Submodule添加到项目根目录(你也可以放在其他地方)下的pybind11文件夹
git submodule add https://github.com/pybind/pybind11.git pybind11 |
2. setup.py
在项目根目录添加一个setup.py文件,便于pip安装
可以基于官方示例修改
3. CMakeList.txt
cmake_minimum_required(VERSION 3.21) |
核心是通过pybind11_add_module
创建库
4. 编写代码
引入pybind11头文件,并编写约定
|
5. 安装包
在这个项目的外层,输入命令
pip install ./<项目文件夹名> |
就会按照自定义的包
卸载包的方式是 pip uninstall <包名>
6. 使用
import pycppstudy |