ProcessBuilderを使用してJavaからPythonスクリプトを実行しようとしています。スクリプトにはPython 3が最低限必要です。私はこのようにそれを呼んでいる:Mac OSXのJava ProcessBuilderにPython 3が表示されない
// the -u is for unbuffered output
String[] pythonCommand = {"python", "-u", "script.py"};
ProcessBuilder ps = new ProcessBuilder(pythonCommand);
Process pr = pb.start();
それはWindows上で完全に正常に動作し、私はsys.version_info
とPythonのバージョンをプリントアウトするscript.pyを定義する場合、それは、私は、Python 3.6.2
しかし、私の友人のMacbookでは、スクリプトは動作せず、sys.version_info
はPython 2.7.1を示しています。彼女はbrew install python3
の自作を使ってPython 3をインストールしました。端末からpython3 scriptname.py
を実行すると、Python 3.6.2で実行されますが、python scriptname.py
はTerminalからPython 2.7.1で動作します。そのための
、私はOS名がWindowsに起動しませんが、そのコマンドは、Mac上でJavaのProcessBuilderをから動作しない場合、私はちょうど
String[] pythonCommand = {"python3", "-u", "script.py"}; // python3
するJavaのProcessBuilderをコマンドを変更することができると思いましたOS-it throws
java.io.IOException: Cannot run program "python3": error=2, No such file or directory
これは、ProcessBuilderがPythonを実行するために使用しているパスに問題があると考えています。おそらく、MacでPython 3を実行するためにvirtualenvを使用する必要があるかもしれませんが、その方法を知りません。それとも、まったく違うものかもしれませんか?
これを実行すると、Celler/python3のPython 3を '/ usr/local/bin/python3'フォルダの代わりに '/ usr/local/bin/2to3-3.6'フォルダにリンクしようとします。 「2to3-3.6」フォルダがすでに存在していたため、失敗しました。 –
それでは、 'ln -s ... 'コマンドで端末にリンクを作成しようとしてください。 – Xvolks
これは最善の解決策ではないかどうかは分かりません。私たちは、Windows、Linux、MacでPython 3でプロジェクトスクリプトを実行できる簡単な方法を探しています。それは、私たちが使用するすべてのUnixシステムを潜在的に処理するための不要な作業であるようです。私はpipenvを使ってプロジェクトの仮想環境でPythonを実行しようとしています。 –