在 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?哪一个?
此致,
嗯,这里有两个问题:
- PyDev 根据您的配置方式进行代码分析,因此,您可能需要在这里为 PyDev 提供存根,以便能够在您的命名空间中找到所需的名称(在这种情况下,您需要存根对于
System.Resources
-- AddReadMe
不需要它,因为在这种情况下它应该能够找到实际来源)。
- 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)。
我正在使用 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?哪一个?
此致,
嗯,这里有两个问题:
- PyDev 根据您的配置方式进行代码分析,因此,您可能需要在这里为 PyDev 提供存根,以便能够在您的命名空间中找到所需的名称(在这种情况下,您需要存根对于
System.Resources
--AddReadMe
不需要它,因为在这种情况下它应该能够找到实际来源)。 - 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)。