在 PyDev 中支持 Eclipse EASE 指令

Support Eclipse EASE instructions in PyDev

我正在使用 Eclipse EASE (https://www.eclipse.org/ease/) 和 EASE Python 引擎。 问题是 PyDev 无法识别 EASE 指令。目标是避免通过 include EASE 指令导入的 python 模块和方法出现错误,并完成来自此类模块的方法。

假设我有第一个 EASE Python 模块:

AddReadMe.py
------------

loadModule('/System/Resources')

def fct_readme():
    for iproject in getWorkspace().getProjects():
        if not iproject.isOpen():
            continue
        
        ifile = iproject.getFile("README.md")
        
        if not ifile.exists():
            contents = "# " + iproject.getName() + "\n\n" 
            if iproject.hasNature("org.eclipse.jdt.core.javanature"):
                contents += "A Java Project\n"
            elif iproject.hasNature("org.python.pydev.pythonNature"):
                contents += "A Python Project\n"
            writeFile(ifile, contents)

然后我有第二个 EASE Python 模块:

AnotherModule.py
----------------

include('script://AddReadMe.py')
fct_readme()

PyDev 编辑器显示 2 个错误:第一个针对 include 语句,第二个针对 fct_readme() ,这是合乎逻辑的,因为 PyDev 不知道 EASE include 指令。

是否可以使用一些 PyDev 扩展点来支持 EASE?哪一个?

此致,

嗯,这里有两个问题:

  1. PyDev 根据您的配置方式进行代码分析,因此,您可能需要在这里为 PyDev 提供存根,以便能够在您的命名空间中找到所需的名称(在这种情况下,您需要存根对于 System.Resources -- AddReadMe 不需要它,因为在这种情况下它应该能够找到实际来源)。
  2. PyDev 无法知道某些自定义 include()loadModule() 函数实际上执行了导入。

这里的一个选项是以预定义完成的形式为 PyDev 提供内置模块:https://www.pydev.org/manual_101_interpreter.html#PyDevInterpreterConfiguration-PredefinedCompletions(或创建 Python 模块存根文件)。

然后,为了让它真正找到它,在 if False 中做一些导入(因此,PyDev 将在代码分析中考虑它,即使它不会被执行):

include('script://AddReadMe.py')
if False:
    from AddReadMe import *


loadModule('/System/Resources')
if False:
    from System.Resources import *

注意:确保您的源位于源模块下,以便 code-analysis/code-completion 在那里正常工作 (https://www.pydev.org/manual_101_project_conf2.html)。