你需要jython来从java调用python脚本吗?

时间:2015-11-26 00:22:53

标签: java python jython

我在这里回答说,如果你想从java调用python脚本,可以使用jython作为选项。

但是还看到了其他答案,您可以使用ProcessProcessBuilder并调用他们的execstart方法来运行python脚本。

据我所知,jython允许你在java代码中编写python,但它允许你通过PythonInterpreter.execfile调用python脚本。

所以如果我想从我的java代码中调用python脚本(例如使用nltk的文本处理脚本)以及一些参数并将结果返回给我的java程序,我想知道我的选择是什么?我应该使用哪个选项?

1 个答案:

答案 0 :(得分:0)

  

Jython是Java平台的Python语言实现   (source)

如果在安装了常规python的计算机上有常规python脚本,则可以使用ProcessBuilder。这使您不必在Java应用程序中包含整个python运行时。您可以非常轻松地传递参数,返回的文本有点棘手:请参阅http://examples.javacodegeeks.com/core-java/lang/processbuilder/java-lang-processbuilder-example/或其他示例。基本上python程序打印的任何东西都可以通过这种方式捕获。

但是,如果您不喜欢外部依赖项并且喜欢在单个应用程序中发送所有内容,则可以尝试使用jython。它有一些限制,因为它没有附带所有这些模块,似乎它可能有C模块的困难。 Getting Python's nltk.wordnet module working for Jython看起来像是如何让nltk与它一起运行的解释。使用jython时,参数和返回值应该更简单,因为集成更好。如果你想要的不仅仅是印刷文本,Jython甚至可以直接从python调用java代码。这将为您提供混合代码的有趣选项。