簡體   English   中英

從 NodeJS 執行 python 腳本

[英]Executing a python script from NodeJS

我正在嘗試使用此處解釋的子進程核心模塊從 node.js 應用程序執行機器學習腳本

但是,我無法從 script.stdout.on 獲得簡單的輸出。

我正在使用 Node v12.5.0 和 python 3.7.3

我制作了一個示例“hello world”腳本和 JS 函數來測試(如下所示),並從命令行運行腳本就好了。

這些是我的腳本:

測試文件

import sys

print('hello world')
sys.stdout.flush()

JavaScript 測試功能

  const { spawn } = require("child_process");
  const pytest = spawn("python", ["./path/to/test.py"]);
  console.log("firstPrint");

  pytest.stdout.on("data", data => {
    console.log("secondPrint");
    console.log(data);
  });

  pytest.stdout.on("close", code => {
    console.log(`script closed: ${code}`);
  });

我的控制台輸出是:

firstPrint
script closed: false

雖然它應該是:

firstPrint
secondPrint
hello world
script closed: {code}

最終對我來說是什么問題:

正如@dfsq 所建議的,我添加了一個 pytest.stderr.on 回調並收到“無法打開文件”錯誤。

Node 總是從項目的根文件夾執行“spawn”命令,所以在我的例子中,即使執行“spawn”命令的腳本在 /src 中,我也必須手動將“./src”添加到路徑中。

執行JS函數的腳本在/src里面

舊路徑(不起作用):“./test.py”

新路徑(有效):“./src/test.py”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM