Invoke Python modules from Java

Posted by user36813 on Stack Overflow See other posts from Stack Overflow or by user36813
Published on 2009-01-17T22:22:30Z Indexed on 2012/08/28 21:39 UTC
Read the original article Hit count: 280

Filed under:
|
|

I have a Python interface of a graph library written in C - igraph (the name of library). My need is to invoke the python modules pertaining to this graph library from Java code. It goes like this, the core of library is in c. This core has been imported into Python and interfaces to the functions embedded in core are available in Python. My project's rest of the code is in Java and hence I would like to call the graph functions by Java as well. Jython - which lets you invoke python modules with in Java was an option.I went on trying Jython to discover that it will not work in my case as the core code is in C and Jython wont support anything that is imported as a c dll in python code.I also thought of opting for the approach of calling graph routines directly in c. That is without passing through Python code. I am assuming there must be something which lets you call c code from Java, how ever I am not good in C hence I did not go for it. My last resort seems to execute Python interpreter from command line using Java. But that is a dirty and shameless. Also to deal with the results produced by Python code I will have to write the results in a file and read it back in java. Again dirty way. Is there something that any one can suggest me? Thanks to every one giving time.


Thanks Igal for answering. I had a look at it. At first glance it appears as if it is simply calling the python script.

Jep jep = new Jep(false, SCRIPT_PATH, cl);
jep.set("query", query);
jep.runScript(SCRIPT_PATH + file);
jep.close();

Isnt it very similar to what we would do if called the python interpreter from command line through a Java code.

Runtime runtime = Runtime.getRuntime();
Process proc = runtime.exec("python test.py");

Concern is how do I use the results generated by Python script. The naive way is to write them to file and read it back in Java. I am searching for a smarter approach.Thanks for suggestion anyway.

© Stack Overflow or respective owner

Related posts about java

Related posts about python