1.目的
Node.js上で動作するJavascripコードからPythonコードを呼び出す。またPythonコードの出力をJavascriptコードが受け取り、受け取ったデータをJavascript上で処理したい。
2.手段
Python-shellを使います。Python-shellのソースはこちら
3.環境設定、インストール
Python-shellを使うための事前準備やインストール方法を説明します。
node.jsとpythonは既にインストール済とします。
環境
・ubuntu 18.04 on Raspberry pi4 (Docker)
・node.js v12.14.0
・npm 6.13.4
3-1 インストール方法
npmを使用してpython-shellをインストールする。
root@24f85fb6fd69:/home# npm install python-shell
npm WARN home@1.0.0 No description
npm WARN home@1.0.0 No repository field.
+ python-shell@1.0.8
updated 1 package and audited 103 packages in 2.37s
found 0 vulnerabilities
3-2 使用例
ディレクトリTESTを作り、下記のコードが記載されたtest.jsとsample.pyを配置する。
/home/pi/test/test.js
var{PythonShell}=require('python-shell');//PythonShellのインスタンスpyshellを作成する。jsから呼ぶ出すpythonファイル名は'sample.py'varpyshell=newPythonShell('sample.py');//jsからpythonコードに'aaa'を入力データとして提供する pyshell.send(5);//pythonコード実施後にpythonからjsにデータが引き渡される。//pythonに引き渡されるデータは「data」に格納される。pyshell.on('message',function(data){console.log(data);});
/home/pi/test/sample.py
importsysdata=sys.stdin.readline()#標準入力からデータを取得する
num=int(data)defsum(a):returna+3print(sum(num))
3-3 実行
/home/pi/test/
root@24f85fb6fd69:/home/test# node test.js //test.jsを実行する
8//pythonで処理をされた結果がjavascriptに引き渡され実行される。