有一個基於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運行的應用程序調用。出於這個原因,只有一個不工作是令人困惑的。
您可以查找另一個名爲'MyModule.py'的文件,而不是您要導入的文件。你確定具有這些值的文件是導入的文件嗎? – BrenBarn 2014-08-28 03:22:55
嘗試'打印MyModule .__ file__' - 這會告訴你,如果你有正確的模塊。並將id更改爲其他內容,因爲它也是一個內置的python函數。 – tdelaney 2014-08-28 03:49:30
我發現了這個問題。見下面的答案。 (我希望發佈一個答案是正確的事情) – Mophilly 2014-08-28 20:07:30