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