Far*_*ram 5 python java module python-3.x
我想在Java中调用Python函数。我知道有 Jython,它附带了 Java 的 PythonInterpreter,但遗憾的是它只支持 Python 2.7。
为了更好地解释我想做的事情。假设给定文件中有以下 Python 代码:
@staticmethod
def my_first_function():
print("Hi!")
@staticmethod
def my_second_function():
print("Hi again!")
Run Code Online (Sandbox Code Playgroud)
我现在希望能够在 Java 中显式调用这样的函数:
PythonToJava pythonToJava = new PythonToJava("my/python/script/path");
pythonToJava.my_second_function();
pythonToJava.my_first_function();
Run Code Online (Sandbox Code Playgroud)
我如何使用/调用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))
Run Code Online (Sandbox Code Playgroud)