I'm trying to deploy a node.js app that calls a python script for background tasks. The way I'm implementing it is via python-shell:
var pythonShell = require('python-shell');
var options = {
pythonPath: 've-env/bin/python3',
args:
[
req.query.term,
req.params.id,
req.session.user.searchName,
req.session.user.searchKey
]
};
pythonShell.run('VideoAnalyzer/Search.py', options, function (err, data) {
if (err)
throw err ;
var values = JSON.parse(data[0]).value;
var resultsByRel = values;
res.render('video', {resultsByRel: resultsByRel, resultsByTime: [], searchTerm: req.query.term, url: req.query.url});
});
The path to python is specified in options.pythonPath (in a python virtual environment called 've-env').
This works in my local environment. However, when I deployed my app to Azure App Service, I got the following error message:
Error: spawn Unknown system error -8
at _errnoException (util.js:992:11)
at ChildProcess.spawn (internal/child_process.js:323:11)
at exports.spawn (child_process.js:502:9)
at new PythonShell (/home/site/wwwroot/node_modules/python-shell/index.js:59:25)
at Function.PythonShell.run (/home/site/wwwroot/node_modules/python-shell/index.js:160:19)
at Object.exports.search_result_video (/home/site/wwwroot/controllers/searchController.js:20:15)
at /home/site/wwwroot/routes/video.js:15:21
at Layer.handle [as handle_request] (/home/site/wwwroot/node_modules/express/lib/router/layer.js:95:5)
at next (/home/site/wwwroot/node_modules/express/lib/router/route.js:137:13)
at Route.dispatch (/home/site/wwwroot/node_modules/express/lib/router/route.js:112:3)
The app is deployed in Linux environment with node version v8.9.
Is there any python environment configuration I should have performed before deployment?


