[Numpy-discussion] persistent ImportError: No module named multiarray when moving cPickle files between machines

Pauli Virtanen pav+sp at iki.fi
Thu Nov 5 15:29:03 EST 2009


Thu, 05 Nov 2009 12:11:32 -0800, Reckoner wrote:

> Pauli :
> 
> Thanks for your reply. Using 'wb' instead of 'w' for the file mode
> evidently makes this problem go away.
> 
> The mystery is that why does this work with plain lists *and* 'w' and
> not with numpy arrays and 'w'. In other words, why is it that
> numpy.array needs the binary mode while list does not?

Requiring binary is not specific to numpy, but just probably the fact 
that when you have \r\n linefeeds, pickle ends up trying to load a module 
called

	"numpy.core.multiarray\r"

which does not exists. Same thing happens with any other types -- it's 
just that lists are builtin types and don't need any modules loaded to 
unpickle properly.

> Also, for my own edification, how did you know that my "pickle files
> produced on Windows were contaminated by \r\n line  feeds".

I looked in the two files you attached on Numpy trac, and noticed that 
they were different (sha1sum).

-- 
Pauli Virtanen




More information about the NumPy-Discussion mailing list