1. 程式人生 > >【python學習筆記(2)】指令碼報錯"AttributeError: 'module' object has no attribute 'xxx'"解決方法

【python學習筆記(2)】指令碼報錯"AttributeError: 'module' object has no attribute 'xxx'"解決方法

最近在編寫Python指令碼過程中遇到一個問題比較奇怪:Python指令碼完全正常沒問題,但執行總報錯"AttributeError: 'module' object has no attribute 'xxx'"。這其實是.pyc檔案存在問題。

問題定位:
檢視import庫的原始檔,發現原始檔存在且沒有錯誤,同時存在原始檔的.pyc檔案

問題解決方法:

  1. 命名py指令碼時,不要與python預留字,模組名等相同。
  2. 刪除該庫的.pyc檔案(因為py指令碼每次執行時均會生成.pyc檔案;在已經生成.pyc檔案的情況下,若程式碼不更新,執行時依舊會走pyc,所以要刪除.pyc檔案),重新執行程式碼;或者找一個可以執行程式碼的環境,拷貝替換當前機器的.pyc檔案即可。

pyc檔案介紹

pyc檔案,是python編譯後的位元組碼(bytecode)檔案。只要你運行了py檔案,python編譯器就會自動生成一個對應的pyc位元組碼檔案。這個pyc位元組碼檔案,經過python直譯器,會生成機器碼執行(這也是為什麼pyc檔案可以跨平臺部署,類似於java的跨平臺,java中JVM執行的位元組碼檔案)。下次呼叫直接呼叫pyc,而不呼叫py檔案。直到你這個py檔案有改變。python直譯器會檢查pyc檔案中的生成時間,對比py檔案的修改時間,如果py更新,那麼就生成新的pyc。