Мои основные требования - это: < /p>
[*] Вызов должен быть презренным, в смысле, что он не должен нуждаться в модификации. Мне может быть предоставлен любой файл Python с некоторыми функциями внутри него. Я должен быть в состоянии вызвать любую из этих функций, не требуя изменения .py файл.
Код: Выделить всё
intКод: Выделить всё
HashMapКод: Выделить всё
ArrayListИспользовать Pythoninterpreter Jython < /strong>, с которой я могу вызвать функцию Python без каких -либо изменений в. def square2(list):
squares = []
for i in list:
squares.append(i*i)
return squares
< /code>
jythontest.groovy < /strong> < /p>
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
}
}
< /code>
Я очень хорошо могу удовлетворить свои потребности. Но это не cpython.
Используйте Scriptengine : это очень похоже на Pythoninterpreter. Но опять же его Jython. Кроме того, в отличие от Pythoninterpreter, мы не можем работать с Jython 2.5+ и не можем напрямую получить напрямую доступ к Pyobjects. Таким образом, эта опция может быть очень хорошо закрыта. Но не так много информации о вызове Python из Java, чтобы я мог сделать вывод, можно ли удовлетворить мои вышеупомянутые требования. Кто -нибудь может пролить больше света на это? Более конкретно, если мы можем написать код как минимальный, как и в Jython pythoninterpreter. Также я почувствовал, что проект несколько не находится под разработкой. Это? Я совершал ошибки, хватая их? Также есть еще один лучший вариант?
Подробнее здесь: https://stackoverflow.com/questions/394 ... -from-java