When trying to copy.deepcopy an Etrago object it fails with TypeError: cannot pickle 'module' object. I suspect this behaviour is not desired. Full error message:
Traceback (most recent call last):
File "/home/kilian/Documents/PythonProjects/eTraGo_fork/eTraGo/main.py", line 148, in <module>
deepcopy(etrago)
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/copy.py", line 172, in deepcopy
y = _reconstruct(x, memo, *rv)
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/copy.py", line 270, in _reconstruct
state = deepcopy(state, memo)
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/copy.py", line 146, in deepcopy
y = copier(x, memo)
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/copy.py", line 230, in _deepcopy_dict
y[deepcopy(key, memo)] = deepcopy(value, memo)
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/copy.py", line 172, in deepcopy
y = _reconstruct(x, memo, *rv)
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/copy.py", line 270, in _reconstruct
state = deepcopy(state, memo)
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/copy.py", line 146, in deepcopy
y = copier(x, memo)
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/copy.py", line 230, in _deepcopy_dict
y[deepcopy(key, memo)] = deepcopy(value, memo)
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/copy.py", line 172, in deepcopy
y = _reconstruct(x, memo, *rv)
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/copy.py", line 270, in _reconstruct
state = deepcopy(state, memo)
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/copy.py", line 146, in deepcopy
y = copier(x, memo)
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/copy.py", line 230, in _deepcopy_dict
y[deepcopy(key, memo)] = deepcopy(value, memo)
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/copy.py", line 172, in deepcopy
y = _reconstruct(x, memo, *rv)
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/copy.py", line 270, in _reconstruct
state = deepcopy(state, memo)
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/copy.py", line 146, in deepcopy
y = copier(x, memo)
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/copy.py", line 230, in _deepcopy_dict
y[deepcopy(key, memo)] = deepcopy(value, memo)
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/copy.py", line 161, in deepcopy
rv = reductor(4)
TypeError: cannot pickle 'module' object
This SO fix with dill fails as well but gives a more specific error message as following:
Traceback (most recent call last):
File "/home/kilian/Documents/PythonProjects/eTraGo_fork/eTraGo/main.py", line 148, in <module>
dill.loads(dill.dumps(etrago))
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/site-packages/dill/_dill.py", line 263, in dumps
dump(obj, file, protocol, byref, fmode, recurse, **kwds)#, strictio)
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/site-packages/dill/_dill.py", line 235, in dump
Pickler(file, protocol, **_kwds).dump(obj)
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/site-packages/dill/_dill.py", line 394, in dump
StockPickler.dump(self, obj)
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/pickle.py", line 487, in dump
self.save(obj)
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/site-packages/dill/_dill.py", line 388, in save
StockPickler.save(self, obj, save_persistent_id)
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/pickle.py", line 603, in save
self.save_reduce(obj=obj, *rv)
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/pickle.py", line 717, in save_reduce
save(state)
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/site-packages/dill/_dill.py", line 388, in save
StockPickler.save(self, obj, save_persistent_id)
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/pickle.py", line 560, in save
f(self, obj) # Call unbound method with explicit self
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/site-packages/dill/_dill.py", line 1186, in save_module_dict
StockPickler.save_dict(pickler, obj)
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/pickle.py", line 971, in save_dict
self._batch_setitems(obj.items())
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/pickle.py", line 997, in _batch_setitems
save(v)
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/site-packages/dill/_dill.py", line 388, in save
StockPickler.save(self, obj, save_persistent_id)
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/pickle.py", line 603, in save
self.save_reduce(obj=obj, *rv)
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/pickle.py", line 717, in save_reduce
save(state)
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/site-packages/dill/_dill.py", line 388, in save
StockPickler.save(self, obj, save_persistent_id)
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/pickle.py", line 560, in save
f(self, obj) # Call unbound method with explicit self
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/site-packages/dill/_dill.py", line 1186, in save_module_dict
StockPickler.save_dict(pickler, obj)
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/pickle.py", line 971, in save_dict
self._batch_setitems(obj.items())
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/pickle.py", line 997, in _batch_setitems
save(v)
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/site-packages/dill/_dill.py", line 388, in save
StockPickler.save(self, obj, save_persistent_id)
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/pickle.py", line 603, in save
self.save_reduce(obj=obj, *rv)
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/pickle.py", line 717, in save_reduce
save(state)
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/site-packages/dill/_dill.py", line 388, in save
StockPickler.save(self, obj, save_persistent_id)
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/pickle.py", line 560, in save
f(self, obj) # Call unbound method with explicit self
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/site-packages/dill/_dill.py", line 1186, in save_module_dict
StockPickler.save_dict(pickler, obj)
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/pickle.py", line 971, in save_dict
self._batch_setitems(obj.items())
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/pickle.py", line 997, in _batch_setitems
save(v)
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/site-packages/dill/_dill.py", line 388, in save
StockPickler.save(self, obj, save_persistent_id)
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/pickle.py", line 560, in save
f(self, obj) # Call unbound method with explicit self
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/site-packages/dill/_dill.py", line 1824, in save_function
_save_with_postproc(pickler, (_create_function, (
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/site-packages/dill/_dill.py", line 1089, in _save_with_postproc
pickler.save_reduce(*reduction)
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/pickle.py", line 692, in save_reduce
save(args)
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/site-packages/dill/_dill.py", line 388, in save
StockPickler.save(self, obj, save_persistent_id)
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/pickle.py", line 560, in save
f(self, obj) # Call unbound method with explicit self
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/pickle.py", line 886, in save_tuple
save(element)
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/site-packages/dill/_dill.py", line 388, in save
StockPickler.save(self, obj, save_persistent_id)
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/pickle.py", line 603, in save
self.save_reduce(obj=obj, *rv)
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/pickle.py", line 717, in save_reduce
save(state)
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/site-packages/dill/_dill.py", line 388, in save
StockPickler.save(self, obj, save_persistent_id)
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/pickle.py", line 560, in save
f(self, obj) # Call unbound method with explicit self
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/site-packages/dill/_dill.py", line 1186, in save_module_dict
StockPickler.save_dict(pickler, obj)
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/pickle.py", line 971, in save_dict
self._batch_setitems(obj.items())
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/pickle.py", line 997, in _batch_setitems
save(v)
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/site-packages/dill/_dill.py", line 388, in save
StockPickler.save(self, obj, save_persistent_id)
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/pickle.py", line 603, in save
self.save_reduce(obj=obj, *rv)
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/pickle.py", line 692, in save_reduce
save(args)
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/site-packages/dill/_dill.py", line 388, in save
StockPickler.save(self, obj, save_persistent_id)
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/pickle.py", line 560, in save
f(self, obj) # Call unbound method with explicit self
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/pickle.py", line 886, in save_tuple
save(element)
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/site-packages/dill/_dill.py", line 388, in save
StockPickler.save(self, obj, save_persistent_id)
File "/home/kilian/anaconda3/envs/eTraGo_env_dev/lib/python3.9/pickle.py", line 578, in save
rv = reduce(self.proto)
TypeError: cannot pickle 'sqlalchemy.cprocessors.UnicodeResultProcessor' object
When trying to
copy.deepcopy
anEtrago
object it fails withTypeError: cannot pickle 'module' object
. I suspect this behaviour is not desired. Full error message:This SO fix with
dill
fails as well but gives a more specific error message as following: