我正在尝试在python3.6中加载一个(复制的)泡菜对象,当我这样做时,我收到__builtin__\r
的导入错误。
with open('FilePath/FileName.pkl', "rb") as file:
file = pickle.load(file)
---------------------------------------------------------------------------
ModuleNotFoundError Traceback (most recent call last)
<ipython-input-36-b39fbab9bab4> in <module>()
1 with open('FilePath/FileName.pkl', "rb") as file:
----> 2 file = pickle.load(file)
ModuleNotFoundError: No module named '__builtin__\r'
当我在python 2.7中尝试相同操作时,对于
__builtin__
模块,我再次收到导入错误:---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
<ipython-input-3-12ac6524bf1a> in <module>()
1 with open('FilePath/FileName.pkl', "rb") as file:
----> 2 file = pickle.load(file)
/Users/manasa.bulusu/anaconda2/lib/python2.7/pickle.pyc in load(file)
1382
1383 def load(file):
-> 1384 return Unpickler(file).load()
1385
1386 def loads(str):
/Users/manasa.bulusu/anaconda2/lib/python2.7/pickle.pyc in load(self)
862 while 1:
863 key = read(1)
--> 864 dispatch[key](self)
865 except _Stop, stopinst:
866 return stopinst.value
/Users/manasa.bulusu/anaconda2/lib/python2.7/pickle.pyc in load_global(self)
1094 module = self.readline()[:-1]
1095 name = self.readline()[:-1]
-> 1096 klass = self.find_class(module, name)
1097 self.append(klass)
1098 dispatch[GLOBAL] = load_global
/Users/manasa.bulusu/anaconda2/lib/python2.7/pickle.pyc in find_class(self, module, name)
1128 def find_class(self, module, name):
1129 # Subclasses may override this
-> 1130 __import__(module)
1131 mod = sys.modules[module]
1132 klass = getattr(mod, name)
ImportError: No module named __builtin__
我导入了
builtins
(py3.6)和__builtin__
(py2.7),但这并没有引发完全相同的错误。这里的实际问题是什么?另外,__builtin__\r
甚至在py36中似乎都不是真正的软件包。 最佳答案
看起来您在Windows(和Python 2)上以文本模式编写了pickle。使用文本模式是个坏主意,因为\n
-> \r\n
转换使此类腌制在非Windows或Python 3上不可读。
以二进制模式读取数据并在.replace(b'\r\n', b'\n')
之前调用loads
可能会允许您加载数据,就像在Windows上的Python 2上重新加载数据并以二进制模式重新签名一样。
关于python - Pickle ImportError:没有名为__builtin__的模块,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46350566/