将jython解释器设置为PyDev

时间:2017-06-05 07:56:58

标签: python eclipse-rcp jython pydev interpreter

我们正在开发一个应该调试/运行jython脚本的RCP应用程序。这些脚本包含我们的特定注释,因此我们需要创建自己的PythonInterpreter实例并对其进行配置以支持我们的模块和处理程序。 我们正在尝试将PyDev集成到我们的应用程序中,以便获得调试器,编辑器和什么不是,但在尝试将我们自己的jython解释器对象设置为PyDev时遇到问题。

这应该如何完成?

从一些调查中我们可以看到解释器管理器需要可执行文件(jython或python)。有可能以某种方式将我们的对象设置为PyDev或以某种方式扩展PyDev的解释器对象并添加我们的处理程序和模块吗?

编辑:

所以,我们遇到的问题是,当我们尝试以编程方式将jython jar设置为jython解释器时,我们遇到错误,它没有主类,也不能被视为解释器。我们所做的是,我们找到了合适的jython独立jar,它没有引起我们这些问题。 通过设置我们的模块和处理程序意味着我们可以通过编程方式扩展jython脚本功能,以获得解释器所知的一些注释。例如,如果我们有python代码:

@valueChangeHandler(context.controls.Blank.button_0)
def ASP1_configurePanelSettings(event):
    print "Stuff happend"

解释器知道在某些事件发生时将执行@annotated函数。在实例化解释器时,我们还需要添加带有一些jar文件的库。例如:

interpreter.exec("import sys");
if (modulePaths != null && modulePaths.length > 0)
{
    final StringBuilder imports = new StringBuilder();
    for (final String modulePath : modulePaths)
        imports.append("\nsys.path.append('" + modulePath + "')");
    interpreter.exec(imports.toString());
}

因此,要做到这一点,我们需要随时拥有解释器对象。我们注意到,当在pydev编辑器中打开.py文件时,会创建一个新的解释器实例。有没有什么办法可以在我们的代码中获取这个解释器对象并对其进行操作?

1 个答案:

答案 0 :(得分:0)

您应该能够通过org.python.pydev.ui.interpreters.JythonInterpreterManager配置自己的jython解释器,并根据需要通过org.python.pydev.ui.interpreters.AbstractInterpreterManager.setInfos(IInterpreterInfo[], Set<String>, IProgressMonitor)方法进行配置。