У меня есть некий модуль, написанный на boost::python.
Он использует сторонний модуль, написанный на голом С++ с сишным питоньим апи.
namespace py = boost::python;
py::object ThirdPartyModule() {
static py::object module = py::import("third_party_module");
return module;
}
py::object ThirdPartyFun() {
static py::object fun = ThirdPartyModule().attr("fun");
return fun;
}
void my_public_function() {
ThirdPartyFun()();
}
BOOST_PYTHON_MODULE(my_module) {
py::def("my_public_function", my_public_function);
}
import my_module
my_module.my_public_function()
my_module.my_public_function()
Пока это всё было под питон 2.7, — всё работало в лучшем виде.
Перешёл на 3.6 — стало крешиться в деструкторе статического объекта module.
Вопрос: как правильно импортировать сторонний модуль?