【问题标题】:Setting jython interpreter to PyDev将 jython 解释器设置为 PyDev
【发布时间】:2017-06-05 07:56:57
【问题描述】:

我们正在开发一个用于调试/运行 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"

解释器知道@注解的函数会在某些事件发生时被执行。在实例化解释器时,我们还需要添加带有一些 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());
}

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

【问题讨论】:

    标签: python eclipse-rcp jython pydev interpreter


    【解决方案1】:

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

    【讨论】:

    • 我们已经尝试过这个(类似于stackoverflow.com/questions/10587681/…),尽管我们在设置解释器时遇到了一些问题,因为我们试图设置 jython 独立 jar 而不是可执行文件(我们没有可执行文件) .我不确定如何让 PyDev 知道它应该使用我们正在实例化的 PythonInterpreter 对象,或者使用我们自己的模块和处理程序扩展 PyDev 的 PythonInterpreter 对象。
    • 我没有完全理解你的意思......哪些问题?此外,jython 始终设置为 .jar,而不是可执行文件,因此,我不明白什么不起作用,也不知道您对自己的模块和处理程序是什么意思。
    • 我会用更详细的解释来扩展描述。
    猜你喜欢
    • 1970-01-01
    • 2012-12-18
    • 2017-12-30
    • 2011-06-08
    • 1970-01-01
    • 1970-01-01
    • 2013-03-10
    • 2019-03-19
    • 1970-01-01
    相关资源
    最近更新 更多