我想要一个 python GUI 在后台有一个 OCaml 进程。我想在程序的整个生命周期中保持一个 session ,并根据用户输入调用一些 OCaml 命令并检索 OCaml 的输出。一些 OCaml 变量和结构可能会在此过程中定义,因此我想维护一个正在进行的 session 。
我的解决方案是使用 popen 保持 OCaml 顶层进程并与其标准输入和标准输出交互。由于以下几个原因,这纯粹对我有用: 1. 我不知道 OCaml 计算何时完成,也不知道它的输出是否完整或还有更多输出(特别是如果评估需要一些时间,并且如果调用了多个 OCaml 命令)。 2. 我没有固有的方法来判断 OCaml 命令是否运行顺利,或者可能有 OCaml 警告或错误。 3. 我丢失了 OCaml 输出的结构。例如,如果输出分布在多行上,我无法分辨哪些行由于行大小而被断开,哪些行原本是单独的行。
我知道有一些讨论和一些包将 python 与 OCaml 相结合,但它们都从 OCaml 运行 python 命令,而我需要相反的东西。
最佳答案
如果你想在一个单独的进程中运行 OCaml,你需要将你的 OCaml 调用包装在一个函数中,该函数收集所有结果并以有用的序列化格式返回它们,例如JSON。或者,您可以尝试编写一个使用 OCaml toplevel as a library 的 Python C 扩展。 ,但这可能需要相当多的工作。
关于python - 在 python 中集成 OCaml - 如何从 python 中保持 ocaml session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45479510/