[英]pybind11: How to organize pybind module under a namespace package
在下面的 pybind 教程示例中,构建了一个动态库。
https://github.com/pybind/python_example中的setup.py
:
ext_modules = [
Pybind11Extension("python_example",
["src/main.cpp"],
...
),
]
setup(
ext_modules=ext_modules,
...
)
它可以这样导入:
import python_example
但这存在于全局命名空间中,我想将其组织在命名空间 package 下,如下所示:
import mypackage.python_example
似乎无论我把main.cpp
放在哪里,它总是可以在全局命名空间下访问。 我正在考虑例如 numpy,其中所有内容都用作np.somefunction
而我从不从其他名称空间导入。
可以在模块名称前添加一个命名空间。
Pybind11Extension("mypackage.python_example",
["src/main.cpp"],
...
)
但是PYBIND11_MODULE
中的名称应该保持原样。
PYBIND11_MODULE(python_example, m) {
这将在构建期间添加一个文件夹: mypackage/python_example.cpython-38-x86_64-linux-gnu.so
这样你就可以像这样导入它:
import mypackage.python_example
感谢 Marc Gliss 在评论中的回答。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.