繁体   English   中英

pybind11:如何在命名空间 package 下组织 pybind 模块

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM