【发布时间】:2016-02-12 10:00:46
【问题描述】:
我需要从合作者那里加载一组腌制数据。问题是,看来我需要多阵列。我的代码如下:
f = open('data.p', 'rb')
a = pickle.load(f)
这是错误信息。
ImportError Traceback (most recent call last)
<ipython-input-3-17918c47ae2d> in <module>()
----> 1 a = pk.load(f)
/usr/lib/python2.7/pickle.pyc in load(file)
1382
1383 def load(file):
-> 1384 return Unpickler(file).load()
1385
1386 def loads(str):
/usr/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
/usr/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
/usr/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 multiarray
我以为是我电脑里编译的numpy的问题。所以我从我的 Arch Linux repo 中卸载了 numpy 并通过
安装了 numpysudo -H pip2 install numpy
但问题仍然存在。我检查了文件夹$PACKAGE-SITE/numpy/core,multiarray.so 在里面。而且我不知道为什么pickle无法加载模块。
我该如何解决这个问题?我还需要做什么?
PS1。我正在使用 Arch Linux。并尝试了自去年 10 月以来的所有版本的 python 2.7。它们都不起作用。 PS2。由于问题在于加载步骤。我怀疑这个问题更有可能来自 python 的内部冲突而不是数据文件。
【问题讨论】:
-
你能在你正在解压的机器上
import numpy吗?numpy.__version__是什么? -
你知道它是用
'wb'模式还是'w'写的吗?如果泡菜是在'w'模式下编写的,你可以看到这个ImportError,尤其是当泡菜来自Windows 盒子时。 -
@MikeMcKerns 我会问他们的。但是如果他们使用
'w',我能做些什么让它在我的机器上可读吗?喜欢更改 Returns 的符号? -
@ali_m
numpy.__version__是1.10.4。对不起,错误的标题。而python版本是2.7.11 -
@Chong:我认为他们可以用负载阅读它,然后用
wb再次腌制它。这比在泡菜中编辑回报更可靠。
标签: python-2.7 numpy pickle