Appel de fonction Python à partir du code JavaScript
J'aimerais appeler une fonction Python à partir du code JavaScript, car il n'y a pas une alternative à JavaScript pour faire ce que je veux. Est-ce possible? Pourriez-vous régler le ci-dessous extrait de travailler?
Code JavaScript:
var tag = document.getElementsByTagName("p")[0];
text = tag.innerHTML;
//Here I would like to call the Python interpreter with Python function
arrOfStrings = openSomehowPythonInterpreter("~/pythoncode.py", "processParagraph(text)");
~/pythoncode.py
contient les fonctions de l'utilisation avancée des bibliothèques qui n'est pas facile d'écrire l'équivalent en JavaScript:
import nltk # is not in JavaScript
def processParagraph(text):
...
nltk calls
...
return lst # returns a list of strings (will be converted to JavaScript array)
- Non, navigateurs (heureusement) ne sont pas executer du code Python. Vous devrez exécuter que dans un serveur.
- Javascript s'exécute sur le client. Je suppose que le python s'exécute sur le serveur. Vous pouvez envoyer une requête ajax vers le serveur. Il ne sera pas rapide.
- L'utilisation d'ajax, d'envoyer du texte à un script python sur votre serveur. Configurer le script pour renvoyer les données dans un format facile à analyser (pour js) notation (comme JSON) et d'affecter le résultat de arrOfStrings dans le gestionnaire de succès.
- Aussi, la recherche d'un python moteur javascript ne sera pas facile non plus
- Vous pouvez exécuter l'officiel de l'interpréteur Python dans le navigateur par le compiler à l'aide de clang et Emscripten. Ce qui a été fait avant.
- Vous pouvez exécuter IronPython (sorte de Python.Net) dans le navigateur avec silverlight, mais je ne sais pas si NLTK est disponible pour IronPython.
Vous devez vous connecter pour publier un commentaire.
Tous vous avez besoin est de faire une requête ajax à votre pythoncode.
Vous pouvez le faire avec jquery http://api.jquery.com/jQuery.ajax/, ou utiliser javascript
processParagraph(text)
de sorte que les valeurs de retour se termine dans la variablearrOfStrings
?[]
XMLHttpRequest cannot load file:~/pythoncode.py. Cross origin requests are only supported for protocol schemes: http, data, chrome-extension, https, chrome-extension-resource
et même si j'ai compris ce que le problème est de ne pas savoir comment le résoudre. Tout utile pointeur? Merci beaucoup. (btw...chessheaven semble vraiment génial! Je vais l'essayer pour vous, une bonne chose de vous mettre une jolie fille dans votre photo de profil ;))De la
document.getElementsByTagName
je suppose que vous êtes en cours d'exécution du javascript dans un navigateur.La façon traditionnelle d'exposer les fonctionnalités de javascript s'exécutant dans le navigateur est l'appel d'une URL distante à l'aide d'AJAX. Le X en AJAX est pour le XML, mais aujourd'hui tout le monde utilise JSON au lieu de XML.
Par exemple, à l'aide de jQuery, vous pouvez faire quelque chose comme:
Vous devrez mettre en place un python webservice sur le côté serveur. Pour la simple webservices, je tiens à utiliser Flacon.
Une implémentation typique ressemble à ceci:
Vous pouvez exécuter IronPython (sorte de Python.Net) dans le navigateur avec silverlight, mais je ne sais pas si NLTK est disponible pour IronPython.
En général, vous accomplir cela en utilisant une requête ajax qui ressemble à
Vous ne pouvez pas exécuter .py fichiers à partir de JavaScript sans le programme Python que vous ne pouvez pas ouvrir .les fichiers txt sans un éditeur de texte. Mais le tout devient un souffle avec l'aide de l'API Web Server (IIS dans l'exemple ci-dessous).
Installer python et de créer un fichier d'exemple test.py
Créer une méthode dans votre API Web Server
Et maintenant, pour votre JavaScript:
Rappelez-vous que votre .py fichier ne fonctionne pas sur votre ordinateur de l'utilisateur, mais sur le serveur.