Ich habe eine Python-Schnittstelle eines Graphen-Bibliothek in C geschrieben - igraph (der Name der Bibliothek). Ich muss die Python-Module, die zu dieser Graphenbibliothek gehören, von Java-Code aus aufrufen. Der Kern der Bibliothek ist in C. Dieser Kern wurde in Python importiert und die Schnittstellen zu den im Kern eingebetteten Funktionen sind in Python verfügbar. Der restliche Code meines Projekts ist in Java und daher möchte ich die Graphenfunktionen auch in Java aufrufen. Ich habe Jython ausprobiert, um festzustellen, dass es in meinem Fall nicht funktioniert, da der Kerncode in C ist und Jython nichts unterstützt, was als C-DLL in den Python-Code importiert wird. Ich nehme an, dass es etwas geben muss, mit dem man C-Code von Java aus aufrufen kann, aber ich bin nicht gut in C, daher habe ich es nicht versucht. Mein letzter Ausweg scheint zu sein, den Python-Interpreter von der Kommandozeile aus mit Java auszuführen. Aber das ist schmutzig und schamlos. Um die Ergebnisse des Python-Codes zu verarbeiten, muss ich die Ergebnisse in eine Datei schreiben und in Java zurücklesen. Auch das ist ein schmutziger Weg. Gibt es etwas, das mir jemand vorschlagen kann? Vielen Dank an alle, die sich Zeit nehmen.
Vielen Dank, Igal, für die Antwort. Ich habe es mir angeschaut. Auf den ersten Blick sieht es so aus, als würde es einfach das Python-Skript aufrufen.
Jep jep = new Jep(false, SCRIPT_PATH, cl);
jep.set("query", query);
jep.runScript(SCRIPT_PATH + file);
jep.close();
Ist es nicht sehr ähnlich zu dem, was wir tun würden, wenn der Python-Interpreter von der Kommandozeile durch einen Java-Code aufgerufen.
Runtime runtime = Runtime.getRuntime();
Process proc = runtime.exec("python test.py");
Die Frage ist, wie ich die vom Python-Skript generierten Ergebnisse verwenden kann. Der naive Weg ist, sie in eine Datei zu schreiben und sie in Java zurückzulesen. Ich bin auf der Suche nach einem intelligenteren Ansatz und danke für jeden Vorschlag.