【问题标题】:Support Eclipse EASE instructions in PyDev在 PyDev 中支持 Eclipse EASE 指令
【发布时间】:2021-04-22 20:25:15
【问题描述】:

我将 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 包含指令。

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

最好的问候,

【问题讨论】:

    标签: eclipse pydev


    【解决方案1】:

    嗯,这里有两个问题:

    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 *
    

    注意:请确保您的源代码位于源代码模块下,以便代码分析/代码完成在其中正常工作 (https://www.pydev.org/manual_101_project_conf2.html)。

    【讨论】:

      猜你喜欢
      • 2014-11-14
      • 1970-01-01
      • 1970-01-01
      • 2021-10-04
      • 1970-01-01
      • 1970-01-01
      • 2022-01-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多