graalvm 来宾语言可以使用第 3 方库吗?
Can graalvm guest languages use 3rd party library?
我正在写一些 java 在 graalvm 运行 上的代码
我希望它执行 python 脚本
python 脚本使用第三方库
当我 运行 我的 java 代码出现 ModuleNotFoundError Exception
// 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)
源代码link:https://github.com/huangdaren1997/polyglotDemo
graalvm 来宾语言可以使用第 3 方库吗?以及如何做到?
OS:曼扎罗 20.2 尼比亚
内核:x86_64 Linux 5.9.11-3-MANJARO
Python: Python 3.8.6
openjdk 11 64 位服务器虚拟机 GraalVM CE 20.3.0
首先你需要安装这个包,我假设你已经完成了,但只是为了让这个答案完整:
graalpython -m ginstall install requests
然后你需要配置GraalPython导入the site module。如果您通过可执行文件 运行 GraalPython,则默认情况下会完成此操作,但当您将 GraalPython 嵌入 Java:
时则不会
Context.newBuilder().option("python.ForceImportSite", "true")...
请注意,此设置将取决于站点库中安装的所需包。更干净的解决方案可能是使用 GraalPython 也支持的 venv
module:
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")
编辑:现在有一篇关于整个用例的文章:https://medium.com/graalvm/supercharge-your-java-apps-with-python-ec5d30634d18
我正在写一些 java 在 graalvm 运行 上的代码
我希望它执行 python 脚本
python 脚本使用第三方库
当我 运行 我的 java 代码出现 ModuleNotFoundError Exception
// 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)
源代码link:https://github.com/huangdaren1997/polyglotDemo
graalvm 来宾语言可以使用第 3 方库吗?以及如何做到?
OS:曼扎罗 20.2 尼比亚
内核:x86_64 Linux 5.9.11-3-MANJARO
Python: Python 3.8.6
openjdk 11 64 位服务器虚拟机 GraalVM CE 20.3.0
首先你需要安装这个包,我假设你已经完成了,但只是为了让这个答案完整:
graalpython -m ginstall install requests
然后你需要配置GraalPython导入the site module。如果您通过可执行文件 运行 GraalPython,则默认情况下会完成此操作,但当您将 GraalPython 嵌入 Java:
时则不会Context.newBuilder().option("python.ForceImportSite", "true")...
请注意,此设置将取决于站点库中安装的所需包。更干净的解决方案可能是使用 GraalPython 也支持的 venv
module:
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")
编辑:现在有一篇关于整个用例的文章:https://medium.com/graalvm/supercharge-your-java-apps-with-python-ec5d30634d18