我必须在同一范围内调用 py::initialize_interpreter() 和 py::finalize_interpreter() 吗?

Do I have to call py::initialize_interpreter() and py::finalize_interpreter() within the same scope?

我正在尝试在我的 C++ 应用程序中嵌入 Python 脚本。 我想知道是否必须在同一范围内调用 py::initialize_interpreter()py::finalize_interpreter(),如下所示。

if(condition){
   py::initialize_interpreter();
   {
       other pybind processes
   }
   py::finalize_interpreter();
}

或者我可以这样做:

if(condition){
   py::initialize_interpreter();
}
 /*** other C++ code***/

if(condition){
   other pybind processes
}

/*** other C++ code***/
if(condition){
   py::finalize_interpreter();
}

这行得通吗?

谢谢!

不,您不需要在同一范围内调用它,但是您需要注意,您可以不能在初始化后再次调用 py::initialize_interpreter(); .要再次调用它,您首先需要调用 py::finalize_interpreter();.