java 调用python函数_从Java调用python函数的不同/更好的方法

我是python的新手,正尝试从java调用python的函数。

我的主要要求是:

调用应该是透明的,从某种意义上说,它不应.py仅需要修改文件就可以从Java对其进行调用。我可能会得到任何带有某些功能的python文件。我应该能够调用任何这些功能,而无需修改.py文件。

我希望能够同时发送原语类型(的参数int,String,floats等等)或非原语类型(HashMap,ArrayList从Java)来Python函数和接收返回所返回的对象(其原始类型或非原始类型的可能)从蟒到Java。我也使用pandas DataFrame和numpy ndarray,因此也希望能够与Java发送和接收相应的对象。

我 最好 还是坚持使用CPython而不是Jython,因为我可能需要使用Jython中可能没有的较新的库。

我在网上找到了几个选项。很少有:

.py脚本文件进行任何更改:

py1.py

def square2(list):

squares = []

for i in list:

squares.append(i*i)

return squares

JythonTest.groovy

import org.python.util.PythonInterpreter

import org.python.core.*;

class JythonTest

{

static main(def args)

{

PythonInterpreter pi = new PythonInterpreter()

pi.exec("from py1 import square2")

PyFunction pf = (PyFunction)pi.get("square2")

println pf.__call__(new PyList([1,2,3,4]))[2] //9

}

}

我非常有能力满足我的需求。但是它不是CPython。

没有给出太多有关从java调用python的信息,因此我可以得出结论是否可以满足我的上述要求。谁能对此给予更多的了解?更具体地说,如果我们可以编写与Jython PythonInterpreter中的代码一样少的代码。

如果我正确理解上述所有方法,似乎Jython PythonInterpreter是最佳选择。我在抓住错误时是否犯了错误?还有其他更好的选择吗?