具有 Python 的 GraalVM 多语言原生图像
GraalVM polyglot native image with Python
我正在尝试 运行 使用 java/python 的多语言原生图像。我可以使用此命令行创建本机图像:
native-image --language:python javapython
但是当 运行 它与 ./javapython 它抛出这个错误:
启动失败,无法从 /lib-graalpython/builtins.py 读取核心库。也许你需要设置 python.CoreHome 和 python.StdLibHome.
在查找此说明时我发现了这个:
--python.CoreHome=<String>
--python.StdLibHome=<String>
我尝试使用 graalpython 添加它,使用 CoreHome 它看起来可以工作,但是使用 StdLibHome 抛出另一个错误:
原来的例外是:
回溯(最近调用最后):
文件“/importlib/_bootstrap.py”,第 986 行,在 _find_and_load
ModuleNotFoundError:没有名为 'site'
的模块
然后 运行 再次 ./javapython 但它显示相同的错误。
有谁知道如何配置这些路径或为什么会这样?谢谢
GraalPython 需要知道在哪里寻找它的核心库文件以及 Python 标准库文件。通常,启动器($GRAALVM_HOME/bin/graalpython
)会配置它,但如果您在应用中嵌入 GraalPython,则需要您自己提供。
一种可能性是导出 GRAAL_PYTHONHOME
指向 $GRAALVM_HOME/jre/languages/python
(在基于 JDK11 的 GraalVM 构建上它将是 $GRAALVM_HOME/languages/python
)。另一种是在构建上下文时提供所有选项:
Context context = Context.newBuilder()
.option("python.CoreHome", "/path/to/graalvm/jre/languages/python/lib-graalpython")
.option("python.StdLibHome", "/path/to/graalvm/jre/languages/python/lib-python/3")
// ...
.build()
我正在尝试 运行 使用 java/python 的多语言原生图像。我可以使用此命令行创建本机图像:
native-image --language:python javapython
但是当 运行 它与 ./javapython 它抛出这个错误:
启动失败,无法从 /lib-graalpython/builtins.py 读取核心库。也许你需要设置 python.CoreHome 和 python.StdLibHome.
在查找此说明时我发现了这个:
--python.CoreHome=<String>
--python.StdLibHome=<String>
我尝试使用 graalpython 添加它,使用 CoreHome 它看起来可以工作,但是使用 StdLibHome 抛出另一个错误:
原来的例外是:
回溯(最近调用最后): 文件“/importlib/_bootstrap.py”,第 986 行,在 _find_and_load ModuleNotFoundError:没有名为 'site'
的模块然后 运行 再次 ./javapython 但它显示相同的错误。
有谁知道如何配置这些路径或为什么会这样?谢谢
GraalPython 需要知道在哪里寻找它的核心库文件以及 Python 标准库文件。通常,启动器($GRAALVM_HOME/bin/graalpython
)会配置它,但如果您在应用中嵌入 GraalPython,则需要您自己提供。
一种可能性是导出 GRAAL_PYTHONHOME
指向 $GRAALVM_HOME/jre/languages/python
(在基于 JDK11 的 GraalVM 构建上它将是 $GRAALVM_HOME/languages/python
)。另一种是在构建上下文时提供所有选项:
Context context = Context.newBuilder()
.option("python.CoreHome", "/path/to/graalvm/jre/languages/python/lib-graalpython")
.option("python.StdLibHome", "/path/to/graalvm/jre/languages/python/lib-python/3")
// ...
.build()