|--b
| |--unpickling.py
|--lib
| |--__init__.py
| |--__init__.pyc
| |--class_a.py
| |--class_a.pyc
|--pickling.py
|--unpickling.py
|--class_a.pkl
lib/class_a.py
class ClassA:
pass
pickling.py
import pickle
from lib.class_a import ClassA
a = ClassA()
with open('class_a.pkl', 'w') as f:
pickle.dump(a,f)
unpickling.py
# b/pickling.Same for py
import sys
import pickle
filepath = sys.argv[1]
with open(filepath, 'r') as f:
a = pickle.load(f)
And if you do this, you will die
[~]> python pickling.py
[~]> cd b
[~/b]> python unpickling.py ../class_a.pkl
Traceback (most recent call last):
File "unpickling.py", line 7, in <module>
a = pickle.load(f)
File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py", line 1384, in load
return Unpickler(file).load()
File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py", line 864, in load
dispatch[key](self)
File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py", line 1075, in load_inst
klass = self.find_class(module, name)
File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py", line 1130, in find_class
__import__(module)
ImportError: No module named lib.class_a
I will live if I do this
[~]> python pickling.py
[~]> python unpickling.py ../class_a.pkl