Probleme d'execution script python depuis serveur nodejs

Signaler
Messages postés
12
Date d'inscription
mercredi 31 mars 2021
Statut
Membre
Dernière intervention
7 avril 2021
-
Messages postés
12
Date d'inscription
mercredi 31 mars 2021
Statut
Membre
Dernière intervention
7 avril 2021
-
Bonjour,

Je poste ce sujet car j'ai un problème sur le lancement d'un script python via nodejs. Problème que je ne comprends absolument pas... En effet car le script python fonctionne très bien quand je l’exécute depuis l'invite de commande, mais quand je le lance depuis mon serveur nodejs rien...

Du coup, je me dis que c'est la commande de mon nodejs qui est mauvaise, mais quand je lance un autre script python depuis la commande nodejs alors ce script python s’exécute parfaitement.. tout est identique, seul le script est différent (mêmes répertoires etc...). Du coup je me dis que cela vient du script, mais comme ce fameux script fonctionne parfaitement lorsque je le lance depuis l'invite de commande alors je ne sais pas...

ça fait maintenant 2 jours que je gratte, essaie diverses manip, etc... en exécutant même un fichier .bat qui lance le script, mais rien n'y fait. Le serveur ne veut pas lancer ce fameux script python !

Désespéré j'en appel donc aux forums, afin de m'indiquer une orientation de recherche pour afin trouver ce qui bloque.

En vous remerciant.

le code nodejs :


const express = require('express');
const app = express();
const bodyParser = require('body-parser');
const formidable = require('formidable');
const path = require('path');
const PORT = 8000;
var fs = require('fs');
const {execFile, exec, spawn} = require ('child_process');
var cp = require ('child_process');


app.use(express.static('public'));
app.use(bodyParser.urlencoded({ extended: true }));



app.get('/', function (req, res){
res.sendFile(__dirname + '/public/index.html');
});



function runScript(){
return spawn('python', [
path.join(__dirname + '/public/script.py'),
]);
}


app.post('/start', function(req, res){
const subprocess = runScript()
res.sendFile(__dirname + '/public/index.html');
console.log('script launched')
});


app.listen(8000, function (){

console.log('Server Started on Port : 8000 !')
})



et le code de la page html :


<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >

<head>
<meta name="description" content="Interfac" />
<meta name="Copyright" CONTENT="ttom" />
<meta name="expires" CONTENT="never" />
<meta name="audience" CONTENT="all" />
<meta name="Language" CONTENT="Fr" />

<title>Map</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="shortcut icon" type="image/x-icon" href="favicon.ico" />

<link rel="stylesheet" media="screen" type="text/css" title="Design" href="form.css" />
<link rel="SHORTCUT ICON" href="favicon.ico">

</head>
<body>
<div id="main">
<img src="tom.png" title=" " alt=" " />


<div id="center">
<div id="left">

</div>

<div id="right">
<form action="/start" method="post">
<input title="Clic to Start recording" class="favorite styledstart" type="submit" id="state" value="START">
</form>

</div>
</div>

<div id="bottom">

</div>


</div>
</body>
</html>



Le code server nodejs (version allégée) :

1 réponse

Messages postés
12
Date d'inscription
mercredi 31 mars 2021
Statut
Membre
Dernière intervention
7 avril 2021

Du coup après plusieurs tests, il s'avère que le problème venait de mon fichier python...

Le server nodejs n'accepte pas l'execution du script python avec des adresses du type : " ../file/fichier.txt"

il préfère l'adresse complete : "c:/Users/file/fichier.txt"

oui.. ce qui fonctionne sous linux ne l'est pas forcément sous windows..

Si cela peut aider quelqu'un.

Bonne journée.