С pybind11, как разделить мой код на несколько модулей / файлов?
С pybind11, как разделить мой код на несколько модулей / файлов? Это ускорит этап компиляции. Документация Pybind11 рассматривает здесь особый случай расширения типа, объявленного в другом модуле расширения. Но не более общий / более простой.
1 ответ
Решение
Согласно pybind11 FAQ, здесь, PYBIND11_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; });
}