Во встроенной программе C ++ в pybind11 я определяю модуль python для использования в качестве контейнера для нескольких объектов python, которые я не хочу показывать в глобальном пространстве имен. Затем я хочу импортировать этот модуль по мере необходимости. Но кажется, что просто определить модуль с помощью py::module('mymodule')
недостаточно.
Следующий пример кода компилируется без проблем, но завершается с ошибкой во время выполнения «Нет модуля с именем« application »». Так как же сделать модуль «приложение» известным Python?
#include <pybind11/embed.h>
namespace py = pybind11;
int main(int argc, char *argv[])
{
py::scoped_interpreter guard{};
// Construct python wrappers for them
py::module m("application");
// Define some objects in the module
m.add_object("pet", py::cast("dog"));
// Import the module and access its objects
py::exec("import application\n"
"print(application.pet)");
}