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

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

我在此处的回答中看到,如果您想从 java 调用 python 脚本,您可以使用 jython 作为选项。

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

据我了解,jython 允许您在 java 代码中编写 python,但它也允许您通过 PythonInterpreter.execfile 调用 python 脚本。

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

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

如果在安装了常规 python 的计算机上有常规 python 脚本,您可以简单地使用 ProcessBuilder。这使您不必在 java 申请中包含整个 python 运行 时间。您可以很容易地传递参数,returned 文本有点棘手:请参阅 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 的参数和 return 值应该更简单,因为集成更好。如果您想要的不仅仅是打印文本,Jython 甚至可以直接从 python 调用 java 代码。这将为您提供混合代码的有趣选项。