2017-10-24 14 views
0

私はnode.jsからpythonファイルを呼び出そうとしています。 これはフロー/構造です:node.jsが(フロントエンドからソケット経由で)特定の値を受け取ったとき - pythonファイルを実行します(特定の入力を必要としません) - pythonファイルは.pngファイルを作成して同じディレクトリに保存します。Linuxでpythonとnode.jsを通信するためにchild_processモジュールを使用する方法はありますか?

だから、私は...

を私はNPMモジュールでのpythonシェルを試してみましたが、それはエラーを与え続けるだとそれは私がその.jsファイルがどこにあるかにコピー/インポートされたすべてのパッケージを移動したいように思えます代わりのものを探して、child_processモジュールを見つけました。 以下の問題は、私のコンピュータがLinuxではなくWindowsであるため、のvar pythonExecutableを以下のコードに入れるべきかどうかわかりません。

上記の方法に関するご意見をお待ちしております。

私が行いますhttps://ourcodeworld.com/articles/read/286/how-to-execute-a-python-script-and-retrieve-output-data-and-errors-in-node-js

// The path to your python script 
var myPythonScript = "script.py"; 
// Provide the path of the python executable, if python is available as environment variable then you can use only "python" 
var pythonExecutable = "python.exe"; 

// Function to convert an Uint8Array to a string 
var uint8arrayToString = function(data){ 
    return String.fromCharCode.apply(null, data); 
}; 

const spawn = require('child_process').spawn; 
const scriptExecution = spawn(pythonExecutable, [myPythonScript]); 

// Handle normal output 
scriptExecution.stdout.on('data', (data) => { 
    console.log(uint8arrayToString(data)); 
}); 

// Handle error output 
scriptExecution.stderr.on('data', (data) => { 
    // As said before, convert the Uint8Array to a readable string. 
    console.log(uint8arrayToString(data)); 
}); 

scriptExecution.on('exit', (code) => { 
    console.log("Process quit with code : " + code); 
}); 

答えて

0
var pythonExecutable = "python"; 

から、このコードを参照しています。 python.exeを使用してWindowsの.exeコマンドを実行するプロセスを指示した場合。ちょうど "python"は、pythonがインストールされていないと "pythonコマンドが見つかりません"というエラーを投げるでしょう。

+0

ありがとう!私はpython3で動作していると仮定して、代わりに 'python3'を入力するだけです。 – nysun1103

+0

はいできます。 Pythonコマンドを使ってpython3を実行したい場合は 'alias python = python3'を実行することもできます。 すべての質問が答えであれば、これを解決の質問にすることができます。 –

関連する問題