python 3.6環境下加載pickle文件時,遇到ModuleNotFoundError: No module named ‘__builtin__’錯誤,該如何解決?
本文針對Python 3.6.12環境下使用pickle加載.pkl文件出現的此錯誤進行分析和解決方案提供。 假設用戶在test.py文件中嘗試加載m30k_deen_shr.pkl文件(項目目錄結構此處略去)。
錯誤原因在于__builtin__模塊。這是Python 2.x中的模塊,Python 3.x中其功能已整合到builtins模塊。因此,該錯誤表明加載的.pkl文件很可能是用Python 2.x生成的。
pickle文件與Python版本強相關。不同Python版本對pickle格式的處理方式不同,導致Python 3.x無法正確解析Python 2.x生成的.pkl文件。
立即學習“Python免費學習筆記(深入)”;
解決方法:
-
檢查文件來源: 確認m30k_deen_shr.pkl文件的生成代碼使用的Python版本。如果是Python 2.x,則需要重新使用Python 3.x生成該文件。
-
使用正確的寫入模式: 使用pickle寫入文件時,務必使用wb模式 (open(…, ‘wb’)),避免文本模式寫入導致換行符等問題,從而造成加載失敗。
-
重新生成.pkl文件: 使用Python 3.x代碼重新處理數據并序列化為.pkl文件。 確保在Python 3.x環境下執行序列化操作。
完成以上步驟后,再次嘗試在Python 3.6環境中加載.pkl文件,即可解決ModuleNotFoundError: No module named ‘__builtin__’錯誤。