最近在編寫Python腳本過程中遇到一個問題比較奇怪:Python腳本完全正常沒問題,但執行總報錯"AttributeError: 'module' object has no attribute 'xxx'"。這其實是.pyc文件存在問題。
問題定位:
查看import庫的源文件,發現源文件存在且沒有錯誤,同時存在源文件的.pyc文件
問題解決方法:
- 命名py腳本時,不要與python預留字,模塊名等相同。
- 刪除該庫的.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。