在Nodejs中使用PythonShell模块

时间:2016-12-21 17:26:48

标签: python node.js node-modules

我一直在尝试按照npm pythonshell here的文档进行操作。我只想尝试一个简单的例子来正常运行但没有成功,在线的例子不多,但我确实试着遵循这个one on stackoverflow。那么我的代码到底出了什么问题呢?我不确定为什么我会收到以下错误。我在python中更舒服,nodejs对我来说是新的领域。谢谢你的帮助。

test.py代码:

print("This is a test")

使用pythonshell测试的Nodej:

var PythonShell = require('python-shell');

    var options = {
      mode: 'text',
      pythonPath: '/bin/bash/python2', 
      pythonOptions: ['-u'],
      scriptPath: './TestProject/',
      args: ['value1', 'value2', 'value3']
    };

    PythonShell.run('test.py', options, function (err, results) {
      if (err) throw err;
      // results is an array consisting of messages collected during execution
      console.log('results: %j', results);
    });

这是我的错误

    internal/child_process.js:313
    throw errnoException(err, 'spawn');
    ^

Error: spawn ENOTDIR
    at exports._errnoException (util.js:1022:11)
    at ChildProcess.spawn (internal/child_process.js:313:11)
    at exports.spawn (child_process.js:387:9)
    at new PythonShell (/home/nomad/TestProject/node_modules/python-shell/index.js:59:25)
    at Function.PythonShell.run (/home/nomad/TestProject/node_modules/python-shell/index.js:159:19)
    at Object.<anonymous> (/home/nomad/TestProject/app.js:11:13)
    at Module._compile (module.js:571:32)
    at Object.Module._extensions..js (module.js:580:10)
    at Module.load (module.js:488:32)
    at tryModuleLoad (module.js:447:12)

1 个答案:

答案 0 :(得分:3)

所以我犯了一个错误,就是不在新的系统安装上检查我的python路径,但是使用绝对路径也是脚本运行的必要条件。以下是使用nodejs python-shell npm运行python脚本的任何人的工作示例。感谢Bryan帮助我解决了javascript错误。

var PythonShell = require('python-shell');

    var options = {
      mode: 'text',
      pythonPath: '/usr/bin/python', 
      pythonOptions: ['-u'],
      // make sure you use an absolute path for scriptPath
      scriptPath: '/home/username/Test_Project/Python_Script_dir',
      args: ['value1', 'value2', 'value3']
    };

    PythonShell.run('test.py', options, function (err, results) {
      if (err) throw err;
      // results is an array consisting of messages collected during execution
      console.log('results: %j', results);
    });