Java graalvm来宾语言可以使用第三方库吗?

Java graalvm来宾语言可以使用第三方库吗?,java,graalvm,Java,Graalvm,我正在编写一些在graalvm上运行的java代码 我希望它执行python脚本python脚本使用第三方库 当我运行java代码时,会出现ModuleNotFoundError异常 // java code public static void main(String[] args) throws IOException { try(Context ctx = Context.newBuilder().allowAllAccess(true).build()){ Pat

我正在编写一些在graalvm上运行的java代码
我希望它执行python脚本
python脚本使用第三方库
当我运行java代码时,会出现ModuleNotFoundError异常

// java code
public static void main(String[] args) throws IOException {
    try(Context ctx = Context.newBuilder().allowAllAccess(true).build()){
        Path scriptPath = Paths.get("/home/hyc/Desktop/py_script.py");
        String script = Files.readString(scriptPath);
        Value value = ctx.eval("python", script);
    }
}

// py_script.py
import requests                                                                                                        
url = 'http://www.google.com/'
strhtml = requests.get(url)        
print(strhtml.text)
源代码链接:

graalvm来宾语言是否可以使用第三方库?如何做到这一点?

OS:Manjaro 20.2尼比亚
内核:x86_64 Linux 5.9.11-3-MANJARO
Python:Python 3.8.6

openjdk 11 64位服务器VM GraalVM CE 20.3.0

首先,您需要安装该软件包,我假设您已经安装了该软件包,但为了完成此回答:

graalpython -m ginstall install requests
然后需要配置GraalPython以导入。如果通过可执行文件运行GraalPython,则默认情况下会执行此操作,但在Java中嵌入GraalPython时不会执行此操作:

Context.newBuilder().option("python.ForceImportSite", "true")...
请注意,此设置将取决于站点库中安装的所需软件包。钻头清洁剂解决方案可能是使用GraalPython还支持的:

graalpython -m venv /path/to/you/new/venv/directory
然后安装你需要的东西

/path/to/you/new/venv/directory/bin/graalpython -m ginstall install ...
然后再将此选项传递给GraalPython:

.option("python.SysPrefix", "/path/to/you/new/venv/directory")

你能提出你的问题并添加你拥有的操作系统,以及你用来调用
java
的命令吗?我认为软件包的安装方式应该与任何python实现的安装方式相同。对于graalpython,此文档可能有助于: