如何解决PyDev“未定义变量从导入”错误?

2024-04-26 00:29:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个在Eclipse中使用PyDev的Python项目,PyDev不断为我的代码生成错误。我有一个定义settings对象的模块settings。我在模块b中导入它,并分配一个属性:

from settings import settings
settings.main = object()

在我的一些代码中——但不是全部,语句如下:

from settings import settings
print settings.main 

。。。在Eclipse代码错误窗格中生成“Undefined variable from import:main”消息,即使代码运行时没有问题。我怎样才能纠正这些错误?


Tags: 模块项目对象代码fromimport属性settings
3条回答

对于项目中的代码,唯一的方法是添加一个声明,说明您希望这样做——可能受到if False的保护,这样它就不会执行(静态代码分析只看到您看到的内容,而不是运行时信息——如果您自己打开了该模块,就不会显示需要main)。

要克服这一点,有一些选择:

  1. 如果它是某个外部模块,则可以将其添加到forced builtins中,以便PyDev生成一个shell以获取运行时信息(有关详细信息,请参见http://pydev.org/manual_101_interpreter.html)--即:PyDev通常会将该模块导入到shell中,并对在该模块中找到的类执行dir(module)dir操作,以显示完成并进行代码分析。

  2. 您可以在出现错误的行中使用Ctrl+1(对于Mac,Cmd+1),PyDev将为您提供一个选项来添加注释以忽略该错误。

  3. 可以创建一个stub模块并将其添加到predefined完成(http://pydev.org/manual_101_interpreter.html也有关于这个的详细信息)。

标为“回答”的帖子给出了一个解决办法,而不是解决办法。

这个解决方案对我有效:

  • 转到Window - Preferences - PyDev - Interpreters - Python Interpreter
  • 转到Forced builtins选项卡
  • 点击New...
  • 键入模块的名称(在我的示例中为multiprocessing),然后单击OK

不仅错误消息会消失,模块成员也会被识别。

我正在使用opencv,它依赖于二进制文件等,所以我有脚本,其中每一行都有这个愚蠢的错误。Python是一种动态语言,因此这种情况不应被视为错误。

我删除了这些错误,方法是:

窗口->;首选项->;PyDev->;编辑器->;代码分析->;未定义->;来自导入的未定义变量->;忽略

就这样。

也可能是, 窗口->;首选项->;PyDev->;编辑器->;代码分析->;导入->;未找到导入->;忽略

相关问题 更多 >

    热门问题