使用 Python-Shell 运行 Python 脚本后无响应
No Response After Running Python Script Using Python-Shell
我有一个 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)
我希望它成为 return 一个数组。
谁能帮我解决这个问题?
从 Nodejs python-shell 到 Python 脚本传递参数的 correct syntax 是:
ps.PythonShell.run('./face_detect.py', { args: array1 }, function (err, data) { ... })
这里 Python 脚本中 sys.argv[1]
的值将不包含 Nodejs array1
值,因为您没有设置 args
属性在你的 PythonShell 选项中。
另请注意,这可能应该是 res.send
而不是 req.send
,具体取决于您的程序,如果出现错误,我建议您 return
以防止 "headers already sent" 例外。
我有一个 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)
我希望它成为 return 一个数组。 谁能帮我解决这个问题?
从 Nodejs python-shell 到 Python 脚本传递参数的 correct syntax 是:
ps.PythonShell.run('./face_detect.py', { args: array1 }, function (err, data) { ... })
这里 Python 脚本中 sys.argv[1]
的值将不包含 Nodejs array1
值,因为您没有设置 args
属性在你的 PythonShell 选项中。
另请注意,这可能应该是 res.send
而不是 req.send
,具体取决于您的程序,如果出现错误,我建议您 return
以防止 "headers already sent" 例外。