如何在 sails.js 应用程序中使用 python-shell 访问 python 脚本?

How to access a python script with python-shell in a sails.js App?

我想访问 python 脚本并传递图像,然后等待 json 响应。我应该在获取图像后在 "upload" 函数中执行此操作。

一直在搜索,但未能找到带帆的 python-shell。由于 sails 是建立在 node.js 之上的,因此最有办法。

module.exports = {

fileUpload: function(req, res) {

        res.writeHead(200, { 'content-type': 'text/html' });
        res.end(
            '<form action="http://localhost:1337/postIts/upload" enctype="multipart/form-data" method="post">' +
            '<input type="text" name="title"><br>' +
            '<input type="file" name="uploadFile"><br>' +
            '<input type="submit" value="Upload">' +
            '</form>'
        )
    },
    upload: function(req, res) {
        var uploadFile = req.file('uploadFile')

        uploadFile.upload({
            saveAs: 'image.png'
        }, function onUploadComplete(err, files) {
            if (err)
                return res.serverError(err);
            return res.json({
                message: files.length + ' file(s) uploaded successfully!',
                files: files[0]
            });
        });
    }
};

我想将此上传的图像传递给 python 脚本并等待 json 输出,我将 return 输出给客户端。我没有尝试任何东西,因为我不确定这样做的正确方法。

应该和这个类似,但我不知道正确的方法。在我的控制器中做这件事。

某处应该有一个 import python-shell,也许在 module.export ?

之前

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

var courseid=req.param('courseid');

sails.log.debug(coursed);

var options = {
args: [courseid]
};

PythonShell.run('word2vec.py', options, function (err, results) {

if (err) throw err;

console.log('results: %s', results[0]);

});

return res.ok();

到目前为止,我已尝试安装 pythonshell,然后尝试从控制器导入,并将代码添加到调用 .py 脚本的上传函数,但出现错误,我将上传一张错误图片。这是新代码:

import { PythonShell } from 'python-shell';
var PythonShell = require('python-shell');

module.exports = {                                                                                  
   upload: function(req, res) {
        var uploadFile = req.file('uploadFile')

        uploadFile.upload({
            saveAs: 'image.png',
        }, function onUploadComplete(err, files) {

            let options = {
                mode: 'text',
                pythonOptions: ['-u'], // get print results in real-time
                scriptPath: sails.config.pythonPath,
                args: ['1233ID', files[0].fd]
            };

            PythonShell.run('main2.py', options, function(err, results) {
                if (err) throw err;
                console.log('results: %s', results);
            });

            if (err)
                return res.serverError(err);

            return res.json({
                message: files.length + ' file(s) uploaded successfully!',
                files: files[0].fd
            });
        });
    }
};                                                                                          

see the screenshot for the error