首页 > 解决方案 > 如何在节点 js 服务器中运行 python 脚本?

问题描述

我想在我的节点 js 服务器上运行一个 python 脚本。我已经用 anaconda 安装了 python。这是我的第一种方法:

function runPy() {
    const { spawn } = require('child_process');

    const pyprog = spawn('python', ['--version']);

    pyprog.stdout.on('data', function(data) {
        console.log(`stoud: ${data}`);
    });

    pyprog.stderr.on('data', (data) => {
        console.error(`stderr: ${data}`);
    });

    pyprog.on('close', (code) => {
        console.log(`child process exited with code ${code}`);
    });
}
runPy();

这是我得到的错误:
stderr: Python was not found; 使用 stderr: ut 参数运行
以从 Microsoft Store 安装,或从“设置”>“管理应用程序执行别名”禁用此快捷方式。
子进程以代码 9009 退出

然后我尝试使用 conda 创建一个环境,但我收到另一个错误:

function runPy() {
    const { spawn } = require('child_process');

    const pythonScript = 'faceMorph.py';
    const envName = 'test';
    const command = `conda run -n ${envName} python ${pythonScript}`;
    const pyprog = spawn(command);

    pyprog.stdout.on('data', function(data) {
        console.log(`stoud: ${data}`);
    });

    pyprog.stderr.on('data', (data) => {
        console.error(`stderr: ${data}`);
    });

    pyprog.on('close', (code) => {
        console.log(`child process exited with code ${code}`);
    });
}
runPy();

节点:事件:353 抛出 er;// 未处理的“错误”事件 ^

错误: 在
processTicksAndRejections (节点: internal/process/task_queues:80:21) 在 ChildProcess 实例上发出“错误”事件: 在 Process.ChildProcess._handle.onexit (node:internal/child_process:282:12) onErrorNT (node:internal/child_process:476: 16) 在 processTicksAndRejections (node:internal/process/task_queues:80:21) { errno: -4058, code: 'ENOENT', syscall: 'spawn conda run -n test python faceMorph.py', path: 'conda run - n 测试 python faceMorph.py', spawnargs: [] }










标签: pythonnode.jsserveranaconda

解决方案


推荐阅读