使用 pybind11,如何将我的代码拆分为多个 modules/files?
With pybind11, how to split my code into multiple modules/files?
使用 pybind11,如何将我的代码拆分成多个 modules/files?
这将加快编译步骤。
Pybind11 文档解决了扩展在不同扩展模块 here 中声明的类型的特殊情况。但不是更多general/simpler一个。
根据 pybind11 FAQ,here、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; });
}
使用 pybind11,如何将我的代码拆分成多个 modules/files? 这将加快编译步骤。 Pybind11 文档解决了扩展在不同扩展模块 here 中声明的类型的特殊情况。但不是更多general/simpler一个。
根据 pybind11 FAQ,here、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; });
}