使用pybind11,如何将我的代码拆分为多个模块/文件?

时间:2018-12-13 13:05:23

标签: python c++ pybind11

使用pybind11,如何将我的代码拆分为多个模块/文件? 这样可以加快编译步骤。 Pybind11文档解决了扩展在不同扩展模块here中声明的类型的特殊情况。但不是更通用/更简单的一个。

1 个答案:

答案 0 :(得分:4)

根据pybind11常见问题解答,herePYBIND11_MODULE(module_name, m){ /* bindings */ }可以拆分为在不同文件中定义的多个功能。示例:

example.cpp:

void init_ex1(py::module &);
void init_ex2(py::module &);
/* ... */

PYBIND11_MODULE(example, m) {
    init_ex1(m);
    init_ex2(m);
    /* ... */
}

ex1.cpp:

void init_ex1(py::module &m) {
    m.def("add", [](int a, int b) { return a + b; });
}

ex2.cpp:

void init_ex2(py::module &m) {
    m.def("sub", [](int a, int b) { return a - b; });
}