2014-08-28 33 views
1

有一個基於python的webware的python web服務。在這個應用程序中,有多個「上下文」,基本上是專業化的基礎應用程序的擴展。有五個這樣的。今天增加的一個是拋出一個錯誤,但其他日前添加的錯誤不會。import ... as ...似乎失敗,'module'沒有屬性

import MyModule as mv 

class Main(): 
    def __init__(self): 
     self.vendorcode = mv.id 

上面的代碼在提高了"self.vendorcode = mv.id"錯誤說法模塊沒有屬性"id"。導入的文件"MyModule.py"包含以下內容:

# config parameters 
id = 'TEST' 
code = 'test_c' 
name = 'test_n' 

文件中沒有其他內容。

這個設置爲什麼會在其他四個子目錄中工作,即「上下文」,但不是最後一個?換句話說,我應該尋找什麼?我已確認文件權限和文件字符集類型,看起來很好。

更新:我將「id」更改爲「ident」,但錯誤仍然引發。使用打印來驗證模塊文件是否正確。使用Python 2.4.3解釋器,我看到該文件已加載。在下面的示例中,「TRANS」是預期的返回值。

>>> import MoluVendor as mv 
>>> print mv.ident 
TRANS 
>>> 

所以我寫了一個快速測試,保存其作爲直接與MyModule的一個文件,內容如下:

import MyModule as mv 

class MainTest: 
    def __init__(self): 
     self.vendorcode = mv.ident 

    def showme(self): 
     print self.vendorcode 

if __name__ == '__main__': 
    mt = MainTest() 
    mt.showme() 

,報告正確了。所以導入工作在簡單的情況下。

讓我困擾的是,還有其他四組文件,其中包括每個中的「MyModule.py」,都能正常工作。我比較了代碼和代碼,我找不到任何區別。所有這些文件集都由一個在Apache中作爲deamon運行的應用程序調用。出於這個原因,只有一個不工作是令人困惑的。

+0

您可以查找另一個名爲'MyModule.py'的文件,而不是您要導入的文件。你確定具有這些值的文件是導入的文件嗎? – BrenBarn 2014-08-28 03:22:55

+0

嘗試'打印MyModule .__ file__' - 這會告訴你,如果你有正確的模塊。並將id更改爲其他內容,因爲它也是一個內置的python函數。 – tdelaney 2014-08-28 03:49:30

+0

我發現了這個問題。見下面的答案。 (我希望發佈一個答案是正確的事情) – Mophilly 2014-08-28 20:07:30

回答

0

我瀏覽了相關文件,並檢查了每個gremlins。也就是說,我確定這些文件是ASCII,沒有unicode或嵌入的字符,並使用可接受的代碼頁規範保存它們。我重新加載了應用程序,現在一切正常。

所以,最後,問題出在椅子和鍵盤之間。當我修改新的「上下文」的應用程序文件時,我忽略了(顯然)以適當的格式保存文件。

相關問題