gpt4 book ai didi

python - Pickle导入错误: No module named __builtin__

转载 作者:行者123 更新时间:2023-12-01 02:35:02 66 4
gpt4 key购买 nike

我正在尝试在 python3.6 中加载(复制的)pickle 对象,但这样做时出现 __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 转换使得此类 pickles 在非 Windows 或 Python 3 上无法读取。

以二进制模式读取数据并在加载之前调用.replace(b'\r\n', b'\n')可能会允许您加载数据,就像在 Windows 上的 Python 2 上重新加载数据并以二进制模式重新pickle 一样。

关于python - Pickle导入错误: No module named __builtin__,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46350566/

66 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com