2011-09-13 36 views
1

我使用eclipse/aptana进行python开发。 我有我的Python路径配置没有问题,自动完成正常工作的一切,但我有以下问题:在eclipse中未定义的常量

当我有一个“常数”在我的课之一,我尝试访问它,日食抱怨关于上不断“来自导入未定义的变量”,如

class Universe(object): 
    ULTIMATE_ANSWER = 42 

# in different module 
# edit from: import Universe 
from bigbang.models import Universe 
print Universe.ULTIMATE_ANSWER 

其中Universe.ULTIMATE_ANSWER触发报警。 此外,自动完成工作正常,所以当我键入Universe.x我得到所有提出的常量。

这不是一个紧迫的问题,但它往往变得烦人,并可能会让你忽略实际的错误。

任何有关如何使eclipse在这一个行为的想法? :)

编辑: 这只在导入另一个模块中的类时发生。

编辑2: 如果现在还不清楚上面的代码工作,这只是关于不应该出现的警告...... 我曾尝试和复制本上比我的其他项目,无论是在日食和pydev的aptana。

编辑3: 与下面的评论一样,这可能是pydev中的一个错误。提交并等待...

+0

我认为这可能是一个错误:) – Mark

+0

已经报道,很可能会失去之间数以百万计的伪造导入错误:'( – Geekfish

+0

是否有可能不是重新创建内容辅助数据?当您在每个文件上点击保存时应该重新创建,或者默认包含一些奇怪的模块? – Mark

回答

0

你不要import一个类,你导入一个模块。

如果您的模块被调用Universe(因为是您的类),则变量的完全限定名称为Universe.Universe.ULTIMATE_ANSWER

如果在模块的顶层定义的变量(即你的类外),那么它会被称为Universe.ULTIMATE_ANSWER

# Universe module 
ULTIMATE_ANSWER = 42 
class Universe(object): 
    pass 

# in different module 
import Universe 
print Universe.ULTIMATE_ANSWER 
+0

woops,我编辑你的评论,而不是我的帖子对不起! – Geekfish

+0

我知道如何导入模块,我是这样写的,为了简单起见。 代码工作,自动完成工作,所有其他代码分析工作。宇宙只是一个例子:) – Geekfish

1

如果(见@Aix)你的意思from mymodel import Universe

使用ctrl + 1后Universe.ULTIMATE_ANSWER;系统会要求您添加评论以忽略该错误。

你还可以添加你的模型作为强制内置,促使analyzis在运行时(你说,给没有错误)

+0

这是一个解决方案,用于代码分析无法轻松完成的情况,比如当您使用自己的导入功能时。然而,解决方法并不是一个解决方案,我必须在每个单独的常量上进行。 – Geekfish

+0

它看起来像@Fabio Zadrozny提出的解决方法[this](http://stackoverflow.com/questions/2112715/how-do-i-fix-pydev-undefined-variable-from-import-errors)。我在SourceForge上看到您[与他联系](http://sourceforge.net/tracker/?func=detail&aid=3408721&group_id=85796&atid=577329);做得好!随时告知我们! – Remi

+0

看起来很相似,但在尝试复制它并分享确切的代码后,我发现它可能与项目结构上的某些内容有关。 我会再调查一下,然后将调查结果提交给bug报告,然后可能会做出解决方法:) – Geekfish