поддерживает ли pybind11 импорт стиля «из ‹package› import ‹module›»?

как мне сделать from <package> import <module> в pybind11?

Я не хочу делать import <package>, а затем getattr, как показано ниже.

auto package = pybind11::module::import("package");
auto module =  package.attr("module")

person user3713719    schedule 22.10.2019    source источник
comment
То же опубликовано на gitter.im/pybind/Lobby. получил ответ auto module = pybind11::module::import("package.module"). это работает.   -  person user3713719    schedule 26.10.2019


Ответы (1)


Чтобы сделать код C ++ полностью эквивалентным from <package> import <module> в глобальной области, вам необходимо установить атрибут модуля, в который вы выполняете импорт:

PYBIND11_MODULE(example, m) {
    m.doc() = "pybind11 example plugin"; // optional module docstring

    auto package = pybind11::module::import("package");
    auto module =  package.attr("module")
    m.add_object("module", module);
}

person Sergei    schedule 23.10.2019