Est-il possible d'intégrer Python et JavaScript? Par exemple, imaginons que vous souhaitiez pouvoir définir des classes en JavaScript et les utiliser à partir de Python (ou inversement). Si oui, quel est le meilleur moyen? Je suis intéressé non seulement si cela est possible, mais si quelqu'un l’a fait dans le cadre d’un projet ou d’un produit "sérieux".
Je suppose qu'il serait possible d'utiliser Jython et Rhino , par exemple, mais je suis curieux de savoir si quelqu'un a déjà fait cela, et s'il existe des solutions pour d'autres plateformes (en particulier CPython ).
Voici quelque chose, une enveloppe Python autour de l'interpréteur Javascript SeaMonkey ... http://pypi.python.org/pypi/python-spidermonkey
Que diriez-vous de pyjs ?
À partir du site Web ci-dessus:
pyjs est une plate-forme de développement Rich Internet Application (RIA) pour le Web et le bureau. Avec pyjs, vous pouvez écrire vos applications Web JavaScript entièrement en Python.
Cette question n’est pas tout à fait récente, mais certaines solutions ont été avancées:
deux projets permettent une transition "évidente" entre les objets python et les objets javascript, avec des traductions "évidentes" de int ou float à Number et str ou unicode à String: PyV8 et, comme l'a déjà mentionné un auteur: python-spidermonkey .
il y a en fait deux implémentations de pyv8 - l'expérience originale était de Sébastien Louis, et la deuxième (en développement actif) est de voleur Liu.
mon intérêt dans ces projets a été de les relier à pyjamas , un compilateur python vers javascript, pour créer un accélérateur JIT python.
donc, il y en a beaucoup - cela dépend de ce que vous voulez faire.
Si vous souhaitez simplement partager des types de données complexes entre javascript et python, consultez jsonpickle . Il encapsule les bibliothèques JSON Python standard, mais possède quelques compétences pour sérialiser et désérialiser les classes Python et d'autres types de données.
De nombreux projets Google App Engine ont utilisé cette bibliothèque. Joose et FirePython les deux incorporent jsonpickle.
PyExecJS peut utiliser chacun des logiciels PyV8, Node, JavaScriptCore, SpiderMonkey et JScript.
>>> import execjs
>>> execjs.eval("'red yellow blue'.split(' ')")
['red', 'yellow', 'blue']
>>> execjs.get().name
'Node.js (V8)'
Vous pouvez également consulter le projet PyPy - ils ont un compilateur Python to (n'importe quoi), y compris Python en Javascript, C et llvm. Cela vous permet d'écrire votre code en Python puis de le compiler en Javascript comme vous le souhaitez.
Consultez également le blog informatif:
Malheureusement, vous ne pouvez pas convertir Javascript en Python de cette façon. Cela semble fonctionner très bien dans l’ensemble, ils avaient une version Javascript (en Python compilé) du jeu Bub'n'Bros en ligne (bien que le serveur soit en panne depuis un moment).
Il existe un pont basé sur JavaScriptCore (de WebKit), mais il est assez incomplet: http://code.google.com/p/pyjscore/
une autre possibilité consiste à utiliser XPCOM, par exemple dans des applications basées sur XUL (telles que firefox, Thunderbird, komodo, etc.)
Je jouais avec Pyjon il y a quelque temps et semble avoir réussi à écrire l'éval de Javascript directement en Python et à exécuter des programmes simples ... Bien que l'implémentation de JS ne soit pas complète et plutôt une expérience ...
Utilisez Js2Py pour traduire JavaScript en Python, c’est le seul outil disponible :)
Un grand nombre des projets mentionnés ci-dessus sont morts ou mourants, manquent d'activité et d'intérêt de la part de l'auteur. Intéressant à suivre l'évolution de cette région.
Pour mémoire, à l'époque des implémentations basées sur des plugins, le camp KDE avait tenté de résoudre ce problème avec des plugins et des méthodes non spécifiques à une langue et avait créé le Kross https://en.wikipedia.org/wiki/Kross_(software) - à mon sens, cela n’a jamais décollé, même au sein de la communauté elle-même.
Pendant cette période difficile, les implémentations basées sur javascript sont tout à fait utiles. Peut-être qu’à l’avenir nous verrons un support Python complet et naturel dans les navigateurs.