124 votes

Appeler Python en Java ?

Je me demande s'il est possible d'appeler des fonctions Python à partir d'un code Java en utilisant Jython, ou est-ce seulement pour appeler un code Java à partir de Python ?

4 votes

Veuillez consulter la question similaire et lire la réponse. bytes.com/topic/python/answers/

7voto

subes Points 640

Voici une bibliothèque qui vous permet d'écrire vos scripts python une fois et de décider quelle méthode d'intégration (Jython, CPython/PyPy via Jep et Py4j) utiliser au moment de l'exécution :

https://github.com/subes/invesdwin-context-python

Chaque méthode ayant ses propres avantages/inconvénients, comme expliqué dans le lien.
(3 modules : jep, Py4J, jython )

6voto

Anurag Uniyal Points 31931

Cela dépend de ce que vous entendez par "fonctions python". Si elles ont été écrites en anglais cpython vous ne pouvez pas les appeler directement, vous devrez utiliser JNI mais s'ils étaient écrits en Jython vous pouvez facilement les appeler à partir de java, car jython génère en fin de compte le byte code java.

Maintenant, quand je dis écrit en cpython ou jython, cela n'a pas beaucoup de sens car python est python et la plupart du code fonctionnera sur les deux implémentations, à moins que vous n'utilisiez des bibliothèques spécifiques qui reposent sur cpython ou java.

voir ici comment utiliser l'interpréteur Python en Java.

5voto

Timo Points 1147

En fonction de vos besoins, des options telles que XML-RPC pourrait être utile, qui peut être utilisé pour appeler à distance des fonctions virtuellement dans tout langage supportant le protocole.

0 votes

J'ai utilisé ça pour un projet il y a 15 ans et c'était mortellement compliqué. Utilisez au moins JSON

4voto

alex Points 511

Jython présente certaines limites :

Il existe un certain nombre de différences. Tout d'abord, les programmes Jython ne peuvent pas utiliser les modules d'extension CPython écrits en C. Ces modules possèdent généralement des fichiers portant l'extension l'extension .so, .pyd ou .dll. Si vous souhaitez utiliser un tel module, vous devez rechercher un équivalent écrit en Python pur ou en Java. Bien qu'il soit techniquement techniquement possible de supporter de telles extensions - IronPython le fait - il n'est pas prévu de le faire dans Jython. de le faire dans Jython.

Distribuer mes scripts Python comme fichiers JAR avec Jython ?

vous pouvez simplement appeler python scripts (ou bash ou Perl scripts) depuis Java en utilisant Runtime ou ProcessBuilder et repasser la sortie à Java :

Exécuter un shell bash script en java

Exécution de la ligne de commande en Java

java runtime.getruntime() obtenir la sortie de l'exécution d'un programme en ligne de commande

4voto

nidhin Points 2086

Vous pouvez appeler n'importe quel langage à partir de java en utilisant Interface native Java

6 votes

Tout langage qui peut lui-même être appelé à partir de c, c'est-à-dire. Bon, d'accord, Python peut le faire, mais Jython est une solution beaucoup plus simple (ou l'utilisation de PyInterpreter dans j6+). Il n'est pas si facile d'écrire le code pour appeler les fonctions python depuis le langage c.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X