如何将Python控制台添加到C/C++程序中



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

在不嵌入和/或扩展Python解释器的情况下,这可能吗?用户最好能够使用已经安装的任何python解释器。我需要在交互模式下使用Python解释器,然后在两个进程之间传输数据。是代码。交互式解释器或代码。交互式控制台(https://docs.python.org/3/library/code.html)怎么走?

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

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

如果我正确理解你的问题,使用pybind11和嵌入解释器可以简化Python控制台的实现。你好,来自文档的世界示例:

#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对象可以被强制转换。

最新更新