首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在嵌入的graalpython脚本中导入本地python文件失败

在嵌入的graalpython脚本中导入本地python文件失败
EN

Stack Overflow用户
提问于 2022-06-22 16:21:18
回答 1查看 31关注 0票数 0

是否可以在使用graalpython从Java运行的另一个脚本中导入本地python脚本?

在Java (Scala)方面,代码如下所示:

代码语言:javascript
复制
  val context =  Context.newBuilder("python").
    allowAllAccess(true).
    option("python.ForceImportSite", "true").
    option("python.Executable", "pyScripts/venv/bin/graalpython").
    build()
  val source = Source.newBuilder("python", new File("pyScripts/common/MyPyScript.py")).build()

  context.eval(source)
  val clazz = context.getPolyglotBindings.getMember("MyPyScript")
  val instance = clazz.newInstance()
  val res = instance.as(classOf[PyScriptApi])

然后在graalpython脚本中,我想这样做(这两个python文件都在common子目录中):

代码语言:javascript
复制
import java
import polyglot

from common.ScriptBase import ScriptBase

class MyPyScript(ScriptBase):
    ...

但是,这在Scala方面出现了一个错误:

代码语言:javascript
复制
Exception in thread "main" ModuleNotFoundError: No module named 'common'

我知道Scala代码可以计算这个文件,但是我希望脚本编写器能够将脚本分割成多个文件。

EN

回答 1

Stack Overflow用户

发布于 2022-06-24 09:43:34

如果在Java/Scala代码中的上下文中设置"python.PythonPath“选项,那么本地导入就能工作:

代码语言:javascript
复制
  val context =  Context.newBuilder("python")
    .allowAllAccess(true)
    .option("python.PythonPath", "pyScripts")
    .option("python.ForceImportSite", "true")
    .option("python.Executable", "pyScripts/venv/bin/graalpython")
    .build()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72718927

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档