私は主にScalaアプリケーションを持っています。私はPythonコードをこのアプリケーションに統合する方法に興味があります。それは、あなたが個人的に成功することを証明する方法です。
この文脈で
うまくいけば、私は事実の観察を求めているので、この質問は議論ではなく事実の答えを認めます。ただし、これが主観的すぎる場合は、閉じるときに次のいずれかを提案してください。
ありがとう。
次のように、変数を介して結果をキャプチャし、STDERRを介して例外をキャプチャします。
scalaの場合:
import sys.process._
def callPython(): Unit = {
val result = "python /fullpath/mypythonprogram.py" ! ProcessLogger(stdout append _, stderr append _)
println(result)
println("stdout: " + stdout)
println("stderr: " + stderr)
}
そしてPythonでは:
try:
throws()
return 0
except Exception as err:
sys.stderr.write(f'Exception: {err}')
return 1
詳細については、パッケージprocesshere を参照してください。 ProcessBuilderここ およびProcessLogger-もご覧ください- ここ
それぞれのケースが異なり、すべてのアプローチが異なるチームによってうまく使用されているため、これに対する単一の答えはありません。
一般に、3つのアプローチがあります。