首页 > 解决方案 > 将 GraalVM 引擎和 graalpython 与 Java 应用程序捆绑在一起

问题描述

有一种方法可以运行 Python 脚本,该脚本使用来自 Java 的包,使用 GraalVM 及其 Python 模块graalpython。这是示例https://github.com/paulvi/graalpython-java-template

我想知道是否可以将 GraalVM 引擎捆绑graalpython到我的 Java 应用程序中并生成 jar 或本机映像(例如,使用 GraalVM 项目中的本机映像编译器)?

标签: javapythonbundlegraalvmgraalpython

解决方案


我认为您可以将整个 GraalVM 发行版与您的应用程序捆绑在一起,就像其他一些应用程序与普通 JDK 一样(例如,我认为 IntelliJ 将 JDK 与它捆绑在一起)。那将是最简单的选择。

您至少需要 GraalPython 主目录,其中包含 Python 标准库和 GraalPython 运行任何有意义的程序所需的其他文件。

而且,如果你想在JVM模式下运行,那么你需要在GraalVM上运行,其他的JDK不支持。从理论上讲,您也许可以以某种方式破解它以使用 JVMCI 在股票 JDK 上运行 GraalPython,就像使用 JavaScript [0] 一样,但使用 GraalPython 会复杂得多。

理论上,您可以通过提供自定义文件系统实现 [1] 将 GraalPython 主目录捆绑到您的应用程序中。

[0] https://www.graalvm.org/reference-manual/js/RunOnJDK/

[1] https://www.graalvm.org/truffle/javadoc/org/graalvm/polyglot/io/FileSystem.html


推荐阅读