В рамках более крупного проекта я пытаюсь «встроить» интерактивный интерпретатор Python в процесс Ruby.Я хотел бы иметь возможность сделать что-то вроде следующего:
$ 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
), но безуспешно.способ наладить интерактивное взаимодействие с оболочкой Python из Ruby - по сути, «обернуть» Python CLI?Я использую Ruby 1.8.7 (2010-06-23 patchlevel 299) и Python 2.6.6 на компьютере x86_64, хотя, надеюсь, решения будут переносимыми (ish) для всех версий Python.