Tengo una aplicación Express Node.js, pero también tengo un algoritmo de aprendizaje automático para usar en Python. ¿Hay alguna manera de llamar a las funciones de Python desde mi aplicación Node.js para aprovechar el poder de las bibliotecas de aprendizaje automático?
209
node-python
parece ser un proyecto abandonado.Respuestas:
La forma más fácil que conozco es usar el paquete "child_process" que viene empaquetado con el nodo.
Entonces puedes hacer algo como:
Entonces, todo lo que tiene que hacer es asegurarse de que está
import sys
en su secuencia de comandos de Python, y luego puede accederarg1
usandosys.argv[1]
,arg2
usandosys.argv[2]
, etc.Para enviar datos de vuelta al nodo, simplemente haga lo siguiente en el script de Python:
Y luego el nodo puede escuchar los datos usando:
Dado que esto permite que se pasen múltiples argumentos a un script usando spawn, puede reestructurar un script de python para que uno de los argumentos decida qué función llamar, y el otro argumento pase a esa función, etc.
Espero que esto esté claro. Avísame si algo necesita aclaración.
fuente
exec
es que devuelve un búfer en lugar de una secuencia, y si sus datos exceden lamaxBuffer
configuración, que por defecto es 200kB, obtiene una excepción de búfer excedido y su proceso se anula. Dado quespawn
utiliza secuencias, es más flexible queexec
.Ejemplo para personas que provienen de Python y desean integrar su modelo de aprendizaje automático en la aplicación Node.js:
Utiliza el
child_process
módulo central:No requiere
sys
módulo en su script Python.A continuación se muestra una forma más modular de realizar la tarea usando
Promise
:fuente
El
python-shell
módulo byextrabacon
es una manera simple de ejecutar scripts Python desde Node.js con una comunicación entre procesos básica pero eficiente y un mejor manejo de errores.Instalación:
npm install python-shell
.Ejecutando un script simple de Python:
Ejecutar un script de Python con argumentos y opciones:
Para obtener la documentación completa y el código fuente, consulte https://github.com/extrabacon/python-shell
fuente
Ahora puede usar bibliotecas RPC que admiten Python y Javascript, como zerorpc
Desde su portada:
Cliente Node.js
Servidor Python
fuente
La mayoría de las respuestas anteriores llaman al éxito de la promesa en el encendido ("datos"), no es la forma correcta de hacerlo porque si recibe muchos datos solo obtendrá la primera parte. En su lugar, debes hacerlo al final del evento.
Llamada:
pitón:
fuente
Estoy en el nodo 10 y el proceso hijo
1.0.2
. Los datos de python son una matriz de bytes y deben convertirse. Solo otro ejemplo rápido de hacer una solicitud http en python.nodo
request.py
ps no es un ejemplo artificial ya que el módulo http del nodo no carga algunas solicitudes que necesito hacer
fuente
Puede tomar su python, transpilarlo y luego llamarlo como si fuera javascript. Lo he hecho con éxito para screeps e incluso lo ejecuté en el navegador a la brython .
fuente
Esto funcionó para mí. Su python.exe debe agregarse a sus variables de ruta para este fragmento de código. Además, asegúrese de que su script de Python esté en la carpeta de su proyecto.
fuente