pickle 模塊的報錯解決(No module named 'xxx')


最近在寫項目的時候,用到了pickle模塊把對象寫進了文件,但是在調用的時候卻遇到了下圖錯誤

 

 

 翻譯一下就是在讀取文件中的對象時未找到模塊,打開對應文件:

 

 

 發現,pickle在寫入類對象時會將對應的類文件路徑寫入,我在文件內導包時為方便調試隨手用了.Person,而pickle.dump把這個路徑也寫到了文件里。當外部文件導包時就會發生問題。

這就回到了老生常談的導包問題了。

 

所有調用改成’from bank.package.文件 import 類‘即可。

 

https://www.jianshu.com/p/22bfcede92fd這篇文章詳細寫了使用pick時容易遇到的兩種錯誤,相對較詳細。

pickle.dumps()或pickle.dump()封裝時,會根據你所加載的類對象對數據進行對象化,同時也會把類對象的路徑也打包進去,記錄下它是根據那個目錄下的哪個類進行封裝的,同樣解析時也要找到對應目錄下的對應類進行解析還原

在同一個項目或文件中能完全使用,因為類對象路徑沒有變化





免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM