Можно использовать readline
в Node.js, чтобы прочитать строку кода python, затем отправить ее в python интерактивную оболочку spawn
ed как дочерний процесс, а затем получить вывод?
Я знаю, что это возможно:
import { spawn } from "child_process";
const py = spawn("python", ["-i"]);
py.stdout.on("data", (data) => {
console.log(`stdout: ${data}`);
});
py.stdin.write('print("hello from python!")\n');
// will get 'stdout: hello from python!'
Однако это не будет работать:
import { spawn } from "child_process";
import * as readline from "readline";
const py = spawn("python", ["-i"]);
py.stdout.on("data", (data) => {
console.log(`stdout: ${data}`);
});
py.stdin.write('print("hello from python!")\n');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
rl.prompt();
rl.on("line", (line) => {
py.stdin.write(line);
rl.prompt();
}).on("close", () => {
process.exit()
});
Я хочу сделать это, потому что я хочу разработать интерфейс для python в Node.js. Выполнить отдельную команду / файл python просто через spawn
, но я хочу создать полнофункциональный интерфейс, который будет иметь такие же возможности, как Reticulate в R.