Нет ответа после запуска скрипта Python с использованием Python-Shell - PullRequest
1 голос
/ 02 апреля 2019

У меня есть приложение 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 голосов
/ 02 апреля 2019

Правильный синтаксис для передачи аргумента из Nodejs python-shell в скрипт Python:

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

Здесь значение sys.argv[1] в вашем PythonСкрипт не будет содержать значение Nodejs array1, поскольку вы не устанавливаете свойство args в параметрах PythonShell.

Обратите внимание, что это, вероятно, должно быть res.send вместо req.send, в зависимости от вашегопрограмма, и я советую вам return, если есть ошибка, чтобы предотвратить исключение «заголовки уже отправлены».

...