【发布时间】:2011-10-23 11:37:14
【问题描述】:
作为一个更大项目的一部分,我试图在 Ruby 进程中“嵌入”一个 Python 交互式解释器。我希望能够执行以下操作:
$ irb
irb(main):001:0> pipe = IO.popen("python", "w+")
=> #<IO:0x7f3dba4977e0>
irb(main):002:0> pipe.puts "print 'hello'"
=> nil
irb(main):003:0> pipe.gets
=> 'hello\n'
不幸的是,gets 似乎挂起,而不是从 Python 进程返回任何类型的输出。我用open3 尝试了这个过程的变体,使用模式r+ 而不是w+,以及其他几个小选项(其中python -u),但没有成功。
有没有办法通过 Ruby 与 Python shell 建立交互通信——实际上是“包装”Python CLI?我在 x86_64 机器上使用 Ruby 1.8.7(2010-06-23 补丁级别 299)和 Python 2.6.6,但希望解决方案可以跨 Python 版本移植(ish)。
【问题讨论】:
标签: python ruby subprocess pipe interactive