简体   繁体   中英

do you need jython for calling a python script from java?

I have seen in answered here that if you want to call a python script from java, you can use jython as a option.

But have seen other answers as well saying, you can use Process or ProcessBuilder and call their exec or start methods to run the python script.

As I understand jython allows you to program python in you java code, but it allows you to call python scripts as well via, PythonInterpreter.execfile .

So I'm wondering what are my options if I want to call a python script (eg text processing script which uses nltk) from my java code and along with some arguments and return the results back to my java programme? which option should I use?

Jython is an implementation of the Python language for the Java platform (source)

You can simply use ProcessBuilder if there is a regular python script on a machine that has regular python installed. This saves you from having to include a whole python runtime in your java application. You can pass parameters quite easily, the returned text is a little trickier: See http://examples.javacodegeeks.com/core-java/lang/processbuilder/java-lang-processbuilder-example/ or other examples. Basically anything that the python program prints can be captured that way.

However if you don't like external dependencies and prefer shipping everything in a single application you can try jython. It has some limitations though since it doesn't come with all those modules and it seems it may have difficulties with C modules. Getting Python's nltk.wordnet module working for Jython looks like an explanation on how to get nltk to run with it. Arguments and return values should be simpler with jython since the integration is better. And if you want more than just printed text, Jython can even call into java code directly from python. That would give you interesting options for hybrid code.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM