使いやすいRuby to Pythonブリッジが存在しますか?それとも、私はsystem()を使うのが良いですか?RubyからPythonコードを呼び出すにはどうすればよいですか?
答えて
Rubyからプロセスをフォークせずに、system()などでPythonを呼び出す方法はないと思います。言語の実行時間はまったく異なり、とにかく別々のプロセスにする必要があります。
サブプロセスモジュールを介してプロセスを呼び出します。 system()にはたくさんの欠点があります。獣を殺しましょう。 – nosklo
ルビーにpythonを埋め込むためにMasaki Fukushima's libraryを試すことができますが、それは維持されていないようです。 YMMV
このライブラリでは、Rubyスクリプトは任意のPythonモジュールを直接呼び出すことができます。拡張モジュールとPythonで書かれたモジュールの両方を使うことができます。
ラッキースティッフも使用であるかもしれないのはなぜ面白いこと独創的なからUnholyの名前:
コンパイルのRuby、Pythonのバイトコードに。
そして、加えて、バックDecompyleを使用してPythonのソースコード への
バイトコードを変換する(含まれていた。)は、Ruby 1.9とPython 2.5が必要です。
ニース。以前は神聖ではないと聞いていなかった。 –
インタープリタを実行するためのPythonコードは、プロセスとして起動する必要があります。だからsystem()はあなたの最善の選択肢です。
RPCまたはネットワークソケットを使用することができるpythonコードを呼び出すために、おそらく動作する可能性のある最も単純なものがあります。あなたはPythonスクリプトのようにPythonのコードを使用したい場合はrubypython
偉大な、それが私がやろうとしていることです。 system()だけを使うよりも、好きになる理由はありません。 – Eric
私はそれが本当であるとは思わない:別のアプリケーションにPythonインタープリタを埋め込むためのドキュメントについては、http://docs.python.org/extending/embedding.htmlを参照してください。それは、邪悪のために、Rubyの通訳になる可能性があります。 –
宝石をインストールする機能である、IO.popenを試してみてください。
pythonスクリプト "reverse.py"を使用して配列内の各文字列を逆順にする場合は、ルビコードは次のようになります。
strings = ["hello", "my", "name", "is", "jimmy"]
#IO.popen: 1st arg is exactly what you would type into the command line to execute your python script.
#(You can do this for non-python scripts as well.)
pythonPortal = IO.popen("python reverse.py", "w+")
pythonPortal.puts strings #anything you puts will be available to your python script from stdin
pythonPortal.close_write
reversed = []
temp = pythonPortal.gets #everything your python script writes to stdout (usually using 'print') will be available using gets
while temp!= nil
reversed<<temp
temp = pythonPortal.gets
end
puts reversed
その後、あなたのPythonスクリプトは、この
import sys
def reverse(str):
return str[::-1]
temp = sys.stdin.readlines() #Everything your ruby programs "puts" is available to python through stdin
for item in temp:
print reverse(item[:-1]) #Everything your python script "prints" to stdout is available to the ruby script through .gets
#[:-1] to not include the newline at the end, puts "hello" passes "hello\n" to the python script
出力のようなものになります。 YM olleh EMAN SI ymmij
を
著者は、PythonのRubyコードではなく、RubyからPythonコードを呼び出そうとしています。 –
- 1. Pythonコードから新しいシェルウィンドウでpythonスクリプトを呼び出すにはどうすればいいですか?
- 2. CコードからPythonコードをどのように呼び出すのですか?
- 3. Node.jsからRubyを呼び出すにはどうすればよいですか?
- 4. VBコードからページ上のiframeに投稿を呼び出すにはどうすればよいですか?
- 5. Pythonで別のファイルからクラスメソッドを呼び出すにはどうすればよいですか?
- 6. XFormsアクションからJavaScriptコードを呼び出すにはどうすればよいですか?
- 7. javascriptコードからjquery関数を呼び出すにはどうすればよいですか?
- 8. regexpを含むpythonからシェルコマンドを呼び出すにはどうすればよいですか?
- 9. PythonスクリプトからPythonスクリプトを呼び出すにはどうすればいいですか
- 10. SuperclassからSubclassオブジェクトを呼び出すにはどうすればよいですか? (Python 3)
- 11. PythonプログラムからOCaml関数を呼び出すにはどうすればよいですか?
- 12. PythonからJavascript関数を呼び出すにはどうすればよいですか?
- 13. PythonコードからELFを呼び出す
- 14. PythonからPHPコードを呼び出す
- 15. アクティビティでカスタムクラスを呼び出すにはどうすればよいですか?
- 16. レールコントローラでチャンネルメソッドを呼び出すにはどうすればよいですか?
- 17. サービスクラスでsupportFragmentMangerを呼び出すにはどうすればよいですか?
- 18. インスタンスでクラスメソッドを呼び出すにはどうすればよいですか?
- 19. MVCでコントローラアクションを呼び出すにはどうすればよいですか?
- 20. ベースクラスオブジェクトでサブクラスメソッドを呼び出すにはどうすればよいですか?
- 21. application_controllerでメソッドを呼び出すにはどうすればよいですか?
- 22. render()で.selectedIndexを呼び出すにはどうすればよいですか?
- 23. SwiftでNSLocalizedStringWithDefaultValueを呼び出すにはどうすればよいですか?
- 24. MVC4でカスタムモデルバインダーを呼び出すにはどうすればよいですか?
- 25. ViewPagerOnTabSelectedListenerをプログラムで呼び出すにはどうすればよいですか?
- 26. クラスオブジェクトで.lowerを呼び出すにはどうすればよいですか?
- 27. ムービークリップをランダムに呼び出すにはどうすればよいですか?
- 28. 私のCコードからC#DLLのメソッドを呼び出すにはどうすればいいですか?
- 29. xp_cmdshellの呼び出しをt-sqlコードから削除するにはどうすればいいですか
- 30. 呼び出し元スレッドでインターフェイスコールバックを呼び出すにはどうすればよいですか?
を私はここで以前同様の質問をし、おそらく答えは助けになるでしょう:http://stackoverflow.com/questions/2413878/would-it-be-possible-to-integrate-python-or-perl-with-ruby。 – Yktula