使用Python-Shell运行Python脚本后无响应

时间:2019-04-01 21:21:12

标签: javascript python node.js no-response

我有一个nodeJS应用程序,我需要运行python脚本才能获得一定的响应。我正在使用python-shell来做到这一点,但没有得到任何回应。

我也尝试过使用子进程,同样的响应。

在这里我调用python脚本:

var ps = require('python-shell');
ps.PythonShell.run('./face_detect.py', array1, function (err, data) {
    if (err) req.send(err);
    req.send(data.toString())
}); 

这是我的python脚本的代码段:

import cv2
import sys
import os
import numpy as np

students = sys.argv[1]
# get the names and put them in an array ---> subjects
imagePath = "class/welcome.jpg"
cascPath = "haarcascade_frontalface_alt.xml"

faceCascade = cv2.CascadeClassifier(cascPath)

.....
for (x, y, w, h) in faces:
    num = 0
    crop_img = cv2.UMat(image[y-40:y+h+100,x-40:x+h+40])
    cv2.imwrite("face" + str(num) + ".jpg", crop_img)
    test_img = cv2.imread("face" + str(num) + ".jpg")
    num = num + 1
    predicted_img1 = predict(test_img)
absences["A"] = 1
for name, a in absences.items():
    if a == 0:
        noshow.append(name)
print(noshow)
cv2.waitKey(0)

我希望它返回一个数组。 有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

用于将参数从Nodejs python-shell 传递到Python脚本的correct syntax是:

ps.PythonShell.run('./face_detect.py', { args: array1 }, function (err, data) { ... })

由于您没有在PythonShell选项中设置sys.argv[1]属性,因此Python脚本中array1的值将不包含Nodejs args的值。

请注意,根据您的程序,这可能应该是res.send而不是req.send,如果存在防止“已发送标头”的错误,我建议您return