Python dill.dump_会话不使用getpass
我有一个Jupyter笔记本,我想使用Python dill.dump_会话不使用getpass,python,jupyter,dump,dill,getpass,Python,Jupyter,Dump,Dill,Getpass,我有一个Jupyter笔记本,我想使用dill.dump_session保存它的状态,但是如果笔记本使用getpass模块,函数会抛出一个错误。有办法解决这个问题吗? 我理解不转储密码的意义,但我仍然希望保存所有其他变量,而不必手动检查所有变量 下面是我的代码的一个玩具示例: 导入dill 从getpass导入getpass dill.dump_session(“../session_dump/sess_test.pkl”) 下面是我得到的错误: TypeError
dill.dump_session
保存它的状态,但是如果笔记本使用getpass
模块,函数会抛出一个错误。有办法解决这个问题吗?
我理解不转储密码的意义,但我仍然希望保存所有其他变量,而不必手动检查所有变量
下面是我的代码的一个玩具示例:
导入dill
从getpass导入getpass
dill.dump_session(“../session_dump/sess_test.pkl”)
下面是我得到的错误:
TypeError Traceback (most recent call last)
<ipython-input-8-5758b730705e> in <module>
----> 1 dill.dump_session('../session_dump/sess_test.pkl')
~\Anaconda3\lib\site-packages\dill\_dill.py in dump_session(filename, main, byref)
391 pickler._recurse = False # disable pickling recursion for globals
392 pickler._session = True # is best indicator of when pickling a session
--> 393 pickler.dump(main)
394 finally:
395 if f is not filename: # If newly opened file
~\Anaconda3\lib\pickle.py in dump(self, obj)
435 if self.proto >= 4:
436 self.framer.start_framing()
--> 437 self.save(obj)
438 self.write(STOP)
439 self.framer.end_framing()
~\Anaconda3\lib\pickle.py in save(self, obj, save_persistent_id)
502 f = self.dispatch.get(t)
503 if f is not None:
--> 504 f(self, obj) # Call unbound method with explicit self
505 return
506
~\Anaconda3\lib\site-packages\dill\_dill.py in save_module(pickler, obj)
1267 + ["__builtins__", "__loader__"]]
1268 pickler.save_reduce(_import_module, (obj.__name__,), obj=obj,
-> 1269 state=_main_dict)
1270 log.info("# M1")
1271 else:
~\Anaconda3\lib\pickle.py in save_reduce(self, func, args, state, listitems, dictitems, obj)
660
661 if state is not None:
--> 662 save(state)
663 write(BUILD)
664
~\Anaconda3\lib\pickle.py in save(self, obj, save_persistent_id)
502 f = self.dispatch.get(t)
503 if f is not None:
--> 504 f(self, obj) # Call unbound method with explicit self
505 return
506
~\Anaconda3\lib\site-packages\dill\_dill.py in save_module_dict(pickler, obj)
900 # we only care about session the first pass thru
901 pickler._session = False
--> 902 StockPickler.save_dict(pickler, obj)
903 log.info("# D2")
904 return
~\Anaconda3\lib\pickle.py in save_dict(self, obj)
854
855 self.memoize(obj)
--> 856 self._batch_setitems(obj.items())
857
858 dispatch[dict] = save_dict
~\Anaconda3\lib\pickle.py in _batch_setitems(self, items)
880 for k, v in tmp:
881 save(k)
--> 882 save(v)
883 write(SETITEMS)
884 elif n:
~\Anaconda3\lib\pickle.py in save(self, obj, save_persistent_id)
502 f = self.dispatch.get(t)
503 if f is not None:
--> 504 f(self, obj) # Call unbound method with explicit self
505 return
506
~\Anaconda3\lib\site-packages\dill\_dill.py in save_instancemethod0(pickler, obj)
1076 log.info("Me: %s" % obj) #XXX: obj.__dict__ handled elsewhere?
1077 if PY3:
-> 1078 pickler.save_reduce(MethodType, (obj.__func__, obj.__self__), obj=obj)
1079 else:
1080 pickler.save_reduce(MethodType, (obj.im_func, obj.im_self,
~\Anaconda3\lib\pickle.py in save_reduce(self, func, args, state, listitems, dictitems, obj)
636 else:
637 save(func)
--> 638 save(args)
639 write(REDUCE)
640
~\Anaconda3\lib\pickle.py in save(self, obj, save_persistent_id)
502 f = self.dispatch.get(t)
503 if f is not None:
--> 504 f(self, obj) # Call unbound method with explicit self
505 return
506
~\Anaconda3\lib\pickle.py in save_tuple(self, obj)
769 if n <= 3 and self.proto >= 2:
770 for element in obj:
--> 771 save(element)
772 # Subtle. Same as in the big comment below.
773 if id(obj) in memo:
~\Anaconda3\lib\pickle.py in save(self, obj, save_persistent_id)
547
548 # Save the reduce() output and finally memoize the object
--> 549 self.save_reduce(obj=obj, *rv)
550
551 def persistent_id(self, obj):
~\Anaconda3\lib\pickle.py in save_reduce(self, func, args, state, listitems, dictitems, obj)
660
661 if state is not None:
--> 662 save(state)
663 write(BUILD)
664
~\Anaconda3\lib\pickle.py in save(self, obj, save_persistent_id)
502 f = self.dispatch.get(t)
503 if f is not None:
--> 504 f(self, obj) # Call unbound method with explicit self
505 return
506
~\Anaconda3\lib\site-packages\dill\_dill.py in save_module_dict(pickler, obj)
900 # we only care about session the first pass thru
901 pickler._session = False
--> 902 StockPickler.save_dict(pickler, obj)
903 log.info("# D2")
904 return
~\Anaconda3\lib\pickle.py in save_dict(self, obj)
854
855 self.memoize(obj)
--> 856 self._batch_setitems(obj.items())
857
858 dispatch[dict] = save_dict
~\Anaconda3\lib\pickle.py in _batch_setitems(self, items)
880 for k, v in tmp:
881 save(k)
--> 882 save(v)
883 write(SETITEMS)
884 elif n:
~\Anaconda3\lib\pickle.py in save(self, obj, save_persistent_id)
502 f = self.dispatch.get(t)
503 if f is not None:
--> 504 f(self, obj) # Call unbound method with explicit self
505 return
506
~\Anaconda3\lib\site-packages\dill\_dill.py in save_module_dict(pickler, obj)
900 # we only care about session the first pass thru
901 pickler._session = False
--> 902 StockPickler.save_dict(pickler, obj)
903 log.info("# D2")
904 return
~\Anaconda3\lib\pickle.py in save_dict(self, obj)
854
855 self.memoize(obj)
--> 856 self._batch_setitems(obj.items())
857
858 dispatch[dict] = save_dict
~\Anaconda3\lib\pickle.py in _batch_setitems(self, items)
880 for k, v in tmp:
881 save(k)
--> 882 save(v)
883 write(SETITEMS)
884 elif n:
~\Anaconda3\lib\pickle.py in save(self, obj, save_persistent_id)
547
548 # Save the reduce() output and finally memoize the object
--> 549 self.save_reduce(obj=obj, *rv)
550
551 def persistent_id(self, obj):
~\Anaconda3\lib\pickle.py in save_reduce(self, func, args, state, listitems, dictitems, obj)
660
661 if state is not None:
--> 662 save(state)
663 write(BUILD)
664
~\Anaconda3\lib\pickle.py in save(self, obj, save_persistent_id)
502 f = self.dispatch.get(t)
503 if f is not None:
--> 504 f(self, obj) # Call unbound method with explicit self
505 return
506
~\Anaconda3\lib\site-packages\dill\_dill.py in save_module_dict(pickler, obj)
900 # we only care about session the first pass thru
901 pickler._session = False
--> 902 StockPickler.save_dict(pickler, obj)
903 log.info("# D2")
904 return
~\Anaconda3\lib\pickle.py in save_dict(self, obj)
854
855 self.memoize(obj)
--> 856 self._batch_setitems(obj.items())
857
858 dispatch[dict] = save_dict
~\Anaconda3\lib\pickle.py in _batch_setitems(self, items)
885 k, v = tmp[0]
886 save(k)
--> 887 save(v)
888 write(SETITEM)
889 # else tmp is empty, and we're done
~\Anaconda3\lib\pickle.py in save(self, obj, save_persistent_id)
547
548 # Save the reduce() output and finally memoize the object
--> 549 self.save_reduce(obj=obj, *rv)
550
551 def persistent_id(self, obj):
~\Anaconda3\lib\pickle.py in save_reduce(self, func, args, state, listitems, dictitems, obj)
660
661 if state is not None:
--> 662 save(state)
663 write(BUILD)
664
~\Anaconda3\lib\pickle.py in save(self, obj, save_persistent_id)
502 f = self.dispatch.get(t)
503 if f is not None:
--> 504 f(self, obj) # Call unbound method with explicit self
505 return
506
~\Anaconda3\lib\site-packages\dill\_dill.py in save_module_dict(pickler, obj)
900 # we only care about session the first pass thru
901 pickler._session = False
--> 902 StockPickler.save_dict(pickler, obj)
903 log.info("# D2")
904 return
~\Anaconda3\lib\pickle.py in save_dict(self, obj)
854
855 self.memoize(obj)
--> 856 self._batch_setitems(obj.items())
857
858 dispatch[dict] = save_dict
~\Anaconda3\lib\pickle.py in _batch_setitems(self, items)
880 for k, v in tmp:
881 save(k)
--> 882 save(v)
883 write(SETITEMS)
884 elif n:
~\Anaconda3\lib\pickle.py in save(self, obj, save_persistent_id)
522 reduce = getattr(obj, "__reduce_ex__", None)
523 if reduce is not None:
--> 524 rv = reduce(self.proto)
525 else:
526 reduce = getattr(obj, "__reduce__", None)
~\Anaconda3\lib\site-packages\zmq\backend\cython\socket.cp37-win_amd64.pyd in zmq.backend.cython.socket.Socket.__reduce_cython__()
TypeError: no default __reduce__ due to non-trivial __cinit__
TypeError回溯(最近一次调用)
在里面
---->1 dill.dump_会话(“../session_dump/sess_test.pkl”)
转储会话中的~\Anaconda3\lib\site packages\dill\\u dill.py(文件名,main,byref)
391 pickler._recurse=False#禁用全局函数的pickle递归
392 pickler._session=True#是酸洗会话时间的最佳指示器
-->393酸洗机卸料场(主)
394最后:
395如果f不是文件名:#如果是新打开的文件
转储中的~\Anaconda3\lib\pickle.py(self,obj)
435如果self.proto>=4:
436 self.framer.start_framing()
-->437自我保存(obj)
438自写(停止)
439自成帧器结束成帧()
保存中的~\Anaconda3\lib\pickle.py(self、obj、save\u persistent\u id)
502 f=自调度获取(t)
503如果f不是无:
-->504 f(self,obj)#使用显式self调用未绑定方法
505返回
506
保存模块中的~\Anaconda3\lib\site packages\dill\\u dill.py(pickler,obj)
1267+[“\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
1268 pickler.save_reduce(_import_module,(obj.u名称,),obj=obj,
->1269状态=_main_dict)
1270日志信息(“M1”)
1271其他:
save\u reduce中的~\Anaconda3\lib\pickle.py(self、func、args、state、listitems、dictitems、obj)
660
661如果状态不是无:
-->662保存(状态)
663写入(生成)
664
保存中的~\Anaconda3\lib\pickle.py(self、obj、save\u persistent\u id)
502 f=自调度获取(t)
503如果f不是无:
-->504 f(self,obj)#使用显式self调用未绑定方法
505返回
506
保存模块目录中的~\Anaconda3\lib\site packages\dill\\u dill.py(pickler,obj)
900#我们只关心第一次通过的会话
901 pickler.\u session=False
-->902库存pickler.保存目录(pickler,obj)
903日志信息(“D2”)
904返回
保存目录中的~\Anaconda3\lib\pickle.py(self,obj)
854
855自我记忆(obj)
-->856自身批处理设置项(对象项())
857
858调度[dict]=保存dict
~\Anaconda3\lib\pickle.py in\u batch\u setitems(self,items)
880对于tmp中的k、v:
881保存(k)
-->882保存(v)
883写入(设置项)
884 elif n:
保存中的~\Anaconda3\lib\pickle.py(self、obj、save\u persistent\u id)
502 f=自调度获取(t)
503如果f不是无:
-->504 f(self,obj)#使用显式self调用未绑定方法
505返回
506
~\Anaconda3\lib\site packages\dill\\u dill.py在save\u instancemethod0中(pickler,obj)
1076 log.info(“Me:%s”%obj)#XXX:obj.u dict_uu_u_u_u_u_u_u_u_u)在其他地方处理?
1077如果PY3:
->1078 pickler.save\u reduce(方法类型,(obj.\uu func\uu,obj.\uu self\uu),obj=obj)
1079其他:
1080 pickler.save_reduce(方法类型,(obj.im_func,obj.im_self,
save\u reduce中的~\Anaconda3\lib\pickle.py(self、func、args、state、listitems、dictitems、obj)
636其他:
637保存(func)
-->638保存(args)
639写入(减少)
640
保存中的~\Anaconda3\lib\pickle.py(self、obj、save\u persistent\u id)
502 f=自调度获取(t)
503如果f不是无:
-->504 f(self,obj)#使用显式self调用未绑定方法
505返回
506
保存元组中的~\Anaconda3\lib\pickle.py(self,obj)
769如果n=2:
770对于obj中的元件:
-->771保存(元素)
772#微妙。与下面的大评论相同。
773如果备忘录中的id(obj):
保存中的~\Anaconda3\lib\pickle.py(self、obj、save\u persistent\u id)
547
548#保存reduce()输出,并最终记忆对象
-->549自存自减(obj=obj,*rv)
550
551 def持久_id(自身,obj):
save\u reduce中的~\Anaconda3\lib\pickle.py(self、func、args、state、listitems、dictitems、obj)
660
661如果状态不是无:
-->662保存(状态)
663写入(生成)
664
保存中的~\Anaconda3\lib\pickle.py(self、obj、save\u persistent\u id)
502 f=自调度获取(t)
503如果f不是无:
-->504 f(self,obj)#使用显式self调用未绑定方法
505返回
506
保存模块目录中的~\Anaconda3\lib\site packages\dill\\u dill.py(pickler,obj)
900#我们只关心第一次通过的会话
901 pickler.\u session=False
-->902库存pickler.保存目录(pickler,obj)
903日志信息(“D2”)
904返回
保存目录中的~\Anaconda3\lib\pickle.py(self,obj)
854
855自我记忆(obj)
-->856自身批处理设置项(对象项())
857
858调度[dict]=保存dict
~\Anaconda3\lib\pickle.py in\u batch\u setitems(self,items)
880对于tmp中的k、v:
881保存(k)
-->882保存(v)
883写入(设置项)
884 elif n:
保存中的~\Anaconda3\lib\pickle.py(self、obj、save\u persistent\u id)
502 f=自显示