我正在为以下任务寻找一些指针:
我想将Python控制台添加到现有的C / C++程序。一个重要的要求是用户应该能够通过解释器访问我们的软件。应该可以运行整个脚本,但也可以在交互模式下使用Python解释器。我们已经有了一个Python模块,用户可以通过该模块使用套接字访问我们的软件,而不必将其集成到我们的软件中。

是否可以在不嵌入和/或扩展Python解释器的情况下实现?用户最好能够使用已经安装的任何python解释器。我需要处于交互模式的Python解释器,然后在两个进程之间传输数据。是code.InteractiveInterpreter还是code.InteractiveConsole(https://docs.python.org/3/library/code.html)?

编辑:我不是在寻找第三方库/工具。我知道我可以扩展解释器以获得结果。

无论哪种方式(扩展与否),我都必须在进程之间传输数据。哪种进程间通信将适合这种任务?

最佳答案

如果我正确理解了您的问题,则可以使用pybind11并嵌入解释器来简化Python控制台的实现。来自docs的Hello world示例:

#include <pybind11/embed.h> // everything needed for embedding
namespace py = pybind11;

int main() {
    py::scoped_interpreter guard{}; // start the interpreter and keep it alive

    py::print("Hello, World!"); // use the Python API
}

可以在Python和C++对象之间转换类型,并且方便地,该库提供了从常见标准库类型(例如)的自动转换。 std::vector-> list,std::map-> dict,可以转换python对象。

10-01 01:53
查看更多