I tienen una interfaz de Python de una biblioteca gráfica escrito en C - igraph (el nombre de biblioteca). Mi necesidad es invocar los módulos de python pertenecientes a esta biblioteca de gráficos desde el código de Java. Funciona así, el núcleo de la biblioteca está en c. Este núcleo se ha importado a Python y las interfaces con las funciones integradas en core están disponibles en Python. El resto del código de mi proyecto está en Java y, por lo tanto, también me gustaría llamar a las funciones gráficas por Java. Jython - que le permite invocar módulos de Python con en Java era un option.I continuó tratando Jython para descubrir que no va a funcionar en mi caso como el código del núcleo se encuentra en C y Jython suele apoyar cualquier cosa que se importan como un C de DLL en código python. También pensé en optar por el enfoque de llamar rutinas de gráfico directamente en c. Eso es sin pasar por el código de Python. Supongo que debe haber algo que te permita llamar al código c de Java, sin embargo, no soy bueno en C, por lo tanto, no fui por eso. Mi último recurso parece ejecutar el intérprete de Python desde la línea de comandos usando Java. Pero eso es sucio y desvergonzado. También para tratar con los resultados producidos por el código de Python, tendré que escribir los resultados en un archivo y volver a leerlo en Java. De nuevo sucio. ¿Hay algo que alguien pueda sugerirme? Gracias a todos dando tiempo.módulos Invoke Python de Java
Gracias Igal por responder. Lo he visto. A primera vista, parece como si estuviera simplemente llamando al script de Python.
Jep jep = new Jep(false, SCRIPT_PATH, cl);
jep.set("query", query);
jep.runScript(SCRIPT_PATH + file);
jep.close();
¿No es que sea muy similar a lo que haría si se llama al intérprete de Python desde la línea de comandos a través de un código Java.
Runtime runtime = Runtime.getRuntime();
Process proc = runtime.exec("python test.py");
La preocupación es cómo utilizo los resultados generados por la secuencia de comandos de Python. La forma ingenua es escribirlos en un archivo y leerlos en Java. Estoy buscando un enfoque más inteligente. Gracias por la sugerencia de todos modos.