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

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

我的主要要求是:

  • 调用应该是透明的,从某种意义上说,它不应.py仅需要修改文件就可以从Java对其进行调用。我可能会得到任何带有某些功能的python文件。我应该能够调用任何这些功能,而无需修改.py文件。
  • 我希望能够同时发送原语类型(的参数intStringfloats等等)或非原语类型(HashMapArrayList从Java)来Python函数和接收返回所返回的对象(其原始类型或非原始类型的可能)从蟒到Java。我也使用pandas DataFrame和numpy ndarray,因此也希望能够与Java发送和接收相应的对象。
  • 最好 还是坚持使用CPython而不是Jython,因为我可能需要使用Jython中可能没有的较新的库。

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

  • 通过它我可以调用python函数,而无需对.py脚本文件进行任何更改:

     def square2(list):

squares = []

for i in list:

squares.append(i*i)

return squares

     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。

  • :这与PythonInterpreter非常相似。但是它的Jython又来了。而且,与PythonInterpreter不同,我们不能使用Jython 2.5+,也不能直接访问PyObjects。因此,可以很好地关闭此选项。

  • :无法找到示例,与Jython PythonInterpreter一样最小

  • 。但是没有给出太多有关从java调用python的信息,因此我可以得出结论是否可以满足我的上述要求。谁能对此给予更多的了解?更具体地说,如果我们可以编写与Jython PythonInterpreter中的代码一样少的代码。
  • :但是,快速浏览之后,我感到无法像Jython PythonInterpreter那样编写最少的代码。我也觉得该项目没有得到开发。是吗?

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

回答:

目前尚无此问题的答案。使用CPython依赖于Python字节码的执行,这反过来又要求将Python解释器嵌入执行环境中。由于没有Java运行时附带嵌入式Python解释器,因此看起来Jython确实是最好的答案。

有时您想要的答案不可用!

以上是 从Java调用python函数的不同/更好的方法 的全部内容, 来源链接: utcz.com/qa/430888.html

回到顶部