我想在 Java 中调用 Python 函数。我知道有 Jython,它随 PythonInterpreter for Java 一起提供,但遗憾的是它只支持 Python 2.7。
为了更好地解释我想做什么。假设我在给定文件中有以下 Python 代码:
@staticmethod
def my_first_function():
print("Hi!")
@staticmethod
def my_second_function():
print("Hi again!")
我希望现在能够在 Java 中EXPLICITLY调用这样的函数:
PythonToJava pythonToJava = new PythonToJava("my/python/script/path");
pythonToJava.my_second_function();
pythonToJava.my_first_function();
如何使用/调用 Python 模块/脚本/类/等等。在 Java 中?
最佳答案
使用 Runtime.exec() 方法怎么样?只需执行 Process process = Runtime.getRuntime().exec("python script.py arg1 arg2")
。 Runtime 是 java.lang 包中的一个类,因此您不需要进行任何花哨的导入。
编辑
好吧,如果你有很多功能,那就不太容易管理了。另一方面,如果您不介意一堆包装文件,只需编写一些代码即可为每个函数自动构建一个。
查看这段 Python 代码。只需将 foo
替换为您调用的大型模块,就可以了。
from inspect import getmembers, isfunction
import foo
f_list=[o[0] for o in getmembers(foo) if isfunction(o[1])]
for x in f_list:
print("Build "+str(x))
with open("helper_"+str(x)+".py","wt") as f:
f.write("""import foo
import sys
arg_list=sys.argv[1::]
print(foo.{x}(*arg_list))""".format(x=x))
关于java - 在 Java 中调用 Python 3.x 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52723244/