J'ai une application Express Node.js, mais j'ai également un algorithme d'apprentissage machine à utiliser en Python. Existe-t-il un moyen d'appeler des fonctions Python à partir de mon application Node.js pour utiliser la puissance des bibliothèques d'apprentissage automatique?
209
node-python
semble être un projet abandonné.Réponses:
Le moyen le plus simple que je connaisse est d'utiliser le package "child_process" fourni avec le nœud.
Ensuite, vous pouvez faire quelque chose comme:
Ensuite, tout ce que vous avez à faire est de vous assurer que vous êtes
import sys
dans votre script python, puis vous pouvez accéder à l'arg1
aide desys.argv[1]
, enarg2
utilisantsys.argv[2]
, etc.Pour renvoyer des données au nœud, procédez comme suit dans le script python:
Et puis le nœud peut écouter les données en utilisant:
Étant donné que cela permet de passer plusieurs arguments à un script à l'aide de spawn, vous pouvez restructurer un script python de sorte que l'un des arguments décide de la fonction à appeler et que l'autre argument soit transmis à cette fonction, etc.
J'espère que c'était clair. Faites-moi savoir si quelque chose doit être clarifié.
la source
exec
c'est qu'il renvoie un tampon au lieu d'un flux, et si vos données dépassent lemaxBuffer
paramètre, qui par défaut est de 200 Ko, vous obtenez une exception de dépassement de tampon et votre processus est tué. Étant donné qu'ilspawn
utilise des flux, il est plus flexible queexec
.Exemple pour les personnes qui ont des antécédents en Python et qui souhaitent intégrer leur modèle d'apprentissage automatique dans l'application Node.js:
Il utilise le
child_process
module principal:Il ne nécessite pas de
sys
module dans votre script Python.Vous trouverez ci-dessous une manière plus modulaire d'effectuer la tâche en utilisant
Promise
:la source
Le
python-shell
module byextrabacon
est un moyen simple d'exécuter des scripts Python à partir de Node.js avec une communication interprocessus basique mais efficace et une meilleure gestion des erreurs.Installation:
npm install python-shell
.Exécution d'un script Python simple:
Exécuter un script Python avec des arguments et des options:
Pour la documentation complète et le code source, consultez https://github.com/extrabacon/python-shell
la source
Vous pouvez maintenant utiliser des bibliothèques RPC qui prennent en charge Python et Javascript comme zerorpc
De leur première page:
Client Node.js
Serveur Python
la source
La plupart des réponses précédentes appellent le succès de la promesse dans le ("données"), ce n'est pas la bonne façon de le faire parce que si vous recevez beaucoup de données, vous n'obtiendrez que la première partie. Au lieu de cela, vous devez le faire sur l'événement de fin.
Appel:
python:
la source
Je suis sur le nœud 10 et le processus enfant
1.0.2
. Les données de python sont un tableau d'octets et doivent être converties. Juste un autre exemple rapide de faire une requête http en python.nœud
request.py
ps pas un exemple artificiel puisque le module http du nœud ne charge pas quelques requêtes que je dois faire
la source
Vous pouvez prendre votre python, le transpiler , puis l'appeler comme s'il s'agissait de javascript. J'ai fait cela avec succès pour les screeps et je l'ai même fait fonctionner dans le navigateur à la brython .
la source
Cela a fonctionné pour moi. Votre python.exe doit être ajouté à vos variables de chemin pour cet extrait de code. Assurez-vous également que votre script python se trouve dans votre dossier de projet.
la source