Eu tenho um aplicativo Express Node.js, mas também tenho um algoritmo de aprendizado de máquina para usar no Python. Existe uma maneira de chamar funções do Python do meu aplicativo Node.js. para usar o poder das bibliotecas de aprendizado de máquina?
209
node-python
parece ser um projeto abandonado.Respostas:
A maneira mais fácil que eu conheço é usar o pacote "child_process" que é fornecido com o nó.
Então você pode fazer algo como:
Então, tudo o que você precisa fazer é ter certeza de que está
import sys
no seu script python e poder acessararg1
usandosys.argv[1]
,arg2
usandosys.argv[2]
e assim por diante.Para enviar dados de volta ao nó, faça o seguinte no script python:
E o nó pode escutar dados usando:
Como isso permite que vários argumentos sejam passados para um script usando spawn, você pode reestruturar um script python para que um dos argumentos decida qual função chamar e o outro argumento seja passado para essa função etc.
Espero que isso esteja claro. Deixe-me saber se algo precisa de esclarecimentos.
fonte
exec
é que ele retorna um buffer em vez de um fluxo, e se seus dados excederem amaxBuffer
configuração, cujo padrão é 200kB, você obterá uma exceção excedida no buffer e seu processo será interrompido. Comospawn
usa fluxos, é mais flexível queexec
.Exemplo para pessoas com experiência em Python e que desejam integrar seu modelo de aprendizado de máquina no aplicativo Node.js.
Ele usa o
child_process
módulo principal:Não requer
sys
módulo no seu script Python.Abaixo está uma maneira mais modular de executar a tarefa usando
Promise
:fonte
O
python-shell
módulo byextrabacon
é uma maneira simples de executar scripts Python a partir do Node.js com comunicação básica, mas eficiente entre processos e melhor tratamento de erros.Instalação:
npm install python-shell
.Executando um script Python simples:
Executando um script Python com argumentos e opções:
Para obter a documentação completa e o código-fonte, consulte https://github.com/extrabacon/python-shell
fonte
Agora você pode usar bibliotecas RPC compatíveis com Python e Javascript, como zerorpc
Na primeira página:
Cliente Node.js
Servidor Python
fonte
A maioria das respostas anteriores chama o sucesso da promessa no ("dados"), não é a maneira correta de fazê-lo, porque se você receber muitos dados, receberá apenas a primeira parte. Em vez disso, você deve fazer isso no evento final.
Ligar:
Pitão:
fonte
Estou no nó 10 e processo filho
1.0.2
. Os dados do python são uma matriz de bytes e precisam ser convertidos. Apenas outro exemplo rápido de fazer uma solicitação http em python.nó
request.py
ps não é um exemplo artificial, pois o módulo http do nó não carrega alguns pedidos que eu preciso fazer
fonte
Você pode pegar seu python, transpilar e depois chamá-lo como se fosse javascript. Eu fiz isso com sucesso para screeps e até consegui rodar no navegador à la brython .
fonte
Isso funcionou para mim. Seu python.exe deve ser adicionado às variáveis de caminho para esse trecho de código. Além disso, verifique se o script python está na pasta do projeto.
fonte