如何使用 pybind11 创建 python 子模块?
我克隆了 python 示例(https://github.com/pybind/python_example)并对其进行了修改。下面是目录树。
*
|
+-- src
| |
| +-- example.cpp
|
+-- setup.py
|
+-- python_example
|
+-- __init__.py
|
+-- cxx
|
+-- __init__.py
setup.py 有以下几行:
ext_modules = [
Extension(
'python_example.cxx',
['src/main.cpp'],
include_dirs=[
# Path to pybind11 headers
get_pybind_include(),
get_pybind_include(user=True),
"include", # the include folder
],
language='c++'
),
]
setup(
...
packages=setuptools.find_packages(),
...
)
以下内容不起作用,因为它不能使用带点的名称。
PYBIND11_PLUGIN(python_example.cxx) {
...
}
以下也不起作用。
PYBIND11_PLUGIN(python_example) {
py::module m = py::module::import("python_example.cxx");
m.def("add", &add, R"pbdoc(
Add two numbers
Some other explanation about the add function.
)pbdoc");
}
这也不起作用:
py::module m2 = (py::module) py::module::import("python_example").attr("cxx");
m2.def("add", &add, R"pbdoc(...
如何使这项工作?