如何在 Pydev Eclipse 中忽略特定的未定义变量

7

我正在Windows上使用Eclipse和Pydev插件编写跨平台的Python脚本。该脚本在当前平台不是NT时使用os.symlink()os.readlink()方法。

由于Windows平台上没有os.symlink()os.readlink()方法,Pydev将它们标记为未定义变量,如下所示:

eclipse_undef_variable

问题:

有没有一种方法可以忽略特定的未定义变量名称错误,而无需修改我的源文件?

编辑:我在stackoverflow上找到了一个忽略未定义变量错误的方法this answer
如果有一种使用项目文件或Pydev设置解决此问题的方法,我将保持问题处于打开状态。


6
我知道这不是你想做的事情,但为了完整性: 你可以在os.symlink/os.readlink所在的行后添加注释#@UndefinedVariable,让pydev忽略这些内容。你可能已经尝试过Ctrl-1解决方案了,但我觉得还是值得一提。 - Mattias Nilsson
1
这是我目前正在使用的解决方案。 - cseaton
3个回答

3
我使用pydev + pylint。
在Preferences>Pydev>Pylint>"Arguments to pass to pylint"部分,你可以添加要忽略的消息。
--disable-msg=W0232,F0401

您也可以使用注释来忽略行内消息,例如:

您也可以使用注释来忽略行内消息:

os.symlink(target, symlink) # IGNORE:<MessageID> 

鼠标悬停在行号处的“x”上,即可查看消息ID。


Pylint会禁用正常的PyDev消息吗?还是只是在Pylint中忽略它们?此外,当将鼠标悬停在“x”上时,我没有收到消息ID,只有“从导入中未定义的错误:符号链接”。 - cseaton
pylint有点像是一个附加组件。您可能正在使用Pydev>Editor>Code Analysis功能。(检查是否选中了“Do code analysis?”)我不熟悉这个功能的工作原理。 - monkut
3
这是另一种语法:os.symlink(target, symlink)。它的作用是创建一个指向目标文件的符号链接。 - AgDude
1
同时,pylint可以使用人类可读的消息ID: # pylint disable=undefined-variable. - cfi

1

我怀疑pydev可能有更好的、具体的解决方案,但是你可以在程序开头放置一些代码,比如:

if not hasattr(os, 'symlink'): os.symlink = None

是的,这是一个hack,但是,除非pydev确实有专门的解决方案(不幸的是我不知道有哪些,但我不是pydev专家;-),也许比什么都没有要好...


4
如果可能的话,我宁愿不更改我的源代码来处理Pydev。此外,似乎您必须在每个未定义变量的方法/函数级别上执行此操作(对我而言,在全局范围内这样做并没有起作用)。希望我可以在我的Pydev项目文件中添加设置。 - cseaton

0

我注意到PyDev无法识别ZeroMQ常量,所以我也遇到了同样的问题。

我发现PyDev在首选项> PyDev > 代码编辑器 > 代码分析中有一个设置选项:未定义-选项卡。只需在那里写入symlinkreadlink(用逗号分隔)即可消除错误。

虽然还不是最优解,但现在已经足够好了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接