我正在为以下任务寻找一些指针: 我想将Python控制台添加到现有的C / C ++程序中。一个重要的要求是用户应该能够通过解释器访问我们的软件。应该可以运行整个脚本,但也可以在交互模式下使用Python解释器。我们已经有了一个Python模块,用户可以通过该模块使用套接字来访问我们的软件,而不必将其集成到软件中。
在不嵌入和/或扩展Python解释器的情况下是否可能?用户最好能够使用已经安装的任何python解释器。我需要处于交互模式的Python解释器,然后在两个进程之间传输数据。是code.InteractiveInterpreter还是code.InteractiveConsole(https://docs.python.org/3/library/code.html)吗?
编辑:我不是在寻找第三方库/工具。我知道我可以扩展解释器来获得结果。
无论哪种方式(扩展与否),我都必须在进程之间传输数据。哪种类型的进程间通信适合这种任务?
答案 0 :(得分:0)
如果我正确理解了您的问题,则可以使用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->列表,std :: map-> dict和python对象都可以转换。