gpt4 book ai didi

java - 使用 graal python 从 java 获取外部环境参数

转载 作者:太空狗 更新时间:2023-10-30 00:58:30 41 4
gpt4 key购买 nike

我在 GraalVM 中运行 Java 以使用它来执行 python。

Context context = Context.create();
Value v = context.getPolyglotBindings();
v.putMember("arguments", arguments);

final Value result = context.eval("python", contentsOfMyScript);
System.out.println(result);
return jsResult;

问题是 python 代码应该如何接收“参数”。 graal 文档指出,如果这是 JS,我会做这样的事情:

const args = Interop.import('arguments');

确实如此。 python 等效项可能是:

import Interop
args = Interop.import('arguments')

def main():
return args

main()

这失败了,因为没有这样的模块。我找不到关于如何从外部语言层获取这些参数的文档,只有关于 pythongraal 的文档以及如何使用 python 传递给其他东西。

最佳答案

有关这方面的一些信息可在 http://www.graalvm.org/docs/reference-manual/polyglot/ 上找到。 .

您正在寻找的模块称为 polyglot。该操作在 Python 中称为 import_value,因为 import 是关键字。

您可以使用以下方法从多语言绑定(bind)中导入:

import polyglot
value = polyglot.import_value('name')

顺便说一句,它在 JavaScript 中几乎相同:Polyglot.import(name)(出于兼容性原因,Interop 仍然有效)

一个完整的例子:

import org.graalvm.polyglot.*;

class Test {
public static void main(String[] args) {
Context context = Context.newBuilder().allowIO(true).build();
Value v = context.getPolyglotBindings();
v.putMember("arguments", 123);

String script = "import polyglot\n" +
"polyglot.import_value('arguments')";
Value array = context.eval("python", "[1,2,42,4]");
Value result = context.eval("python", script);
System.out.println(result);
}
}

关于java - 使用 graal python 从 java 获取外部环境参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51802367/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com