2012-04-28 55 views
1

我試圖導入一個模塊使用了幾個有方法,以及由於某種原因突然我得到的錯誤:導入模塊,AttributeError的

AttributeError: 'module' object has no attribute 'getFoobar' 

當然,我有一個方法getFoobar在我正在導入的模塊中。我在沒有問題的其他文件中使用它。這從來沒有發生過。

我已經嘗試刪除所有.pyc文件,我檢查過我在同一個文件夾中有一個__init__.py,並且沒有進行相互導入。

我已經搜索過SO和Google,沒有解決方案解決了我的問題。 關於可能發生什麼的任何想法?我還能嘗試什麼?

謝謝!

+3

這裏通常的問題是模塊名稱衝突:'import gronk'會讓你得到gronk的預期版本,直到'sys.path'中出現一些其他版本。嘗試打印模塊的'__file__'屬性以查看您獲得的是哪一個。 – torek 2012-04-28 17:52:02

+0

我沒有想到這一點,但事實並非如此。顯然,我很快就會放棄相互進口。我認爲,由於A.py導入B.py,但B.py不導入A.py,所以沒有相互導入。我忘記檢查我輸入的其他模塊是否造成了相互性,而且他們(顯然)!無論如何,它現在已經修復!謝謝,我很欣賞快速反應。 – 2012-04-28 18:18:00

回答

0

你試圖訪問一個免費的模塊級功能或方法嗎?它有很大的不同。如果你有這樣的事情:

class foo: 
    def bar1(): 
     pass 
def bar2(): 
    pass 

保存在一個文件「foo.py」,那麼你需要做不同的事情打電話給每一個,就像這樣:

import foo 
f = foo.foo() 
f.bar1() 
foo.bar2() 

正如你所看到的,你可以直接從foo模塊訪問bar2,因爲它在foo類之外,但是你需要聲明一個類foo的實例來調用bar1。我假設你只是想從foo模塊中調用bar1,因爲這是一個常見的初學者錯誤,特別是如果你從Java切換過來的話。

+0

顯然我搞砸了檢查互相進口。查看以上評論以獲取詳細信息。謝謝chameco!也許它會幫助別人。 – 2012-04-28 18:20:01