微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 PyDev 中支持 Eclipse EASE 指令

如何解决在 PyDev 中支持 Eclipse EASE 指令

我将 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 不知道轻松包括说明。

是否可以使用一些 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 *

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。