ModuleNotFoundError:没有名为“ numpy.core.multiarray \ r”的模块

时间:2019-10-02 03:33:02

标签: python-3.x numpy

我正在尝试加载pkl文件,

pkl_file = open(sys.argv[1], 'rb')
world = pickle.load(pkl_file)

但是我从这些行中得到一个错误

Traceback (most recent call last):
File "E:/python/test.py", line 186, in <module>
world = pickle.load(pkl_file)
ModuleNotFoundError: No module named 'numpy.core.multiarray\r'

我正在使用Windows 10,python 3.7,并安装了四个软件包(numpy 1.17.2,opencv-python 4.1.1.26,pip 19.2.3,setuptools 41.2.0)。我试图将“ rb”更改为“ r”,但仍然出现错误,我该如何解决?

2 个答案:

答案 0 :(得分:0)

我认为这里有两个问题。

首先,您的泡菜是或包含NumPy对象,该对象不属于标准库。因此,您必须确保NumPy已安装到当前的Python环境中,并且在导入之前尝试加载腌制的对象。根据您的设置,安装可能很简单,

pip install numpy

然后您必须添加行,

import numpy as np

在脚本顶部。

第二,似乎Python遇到了this issue,在那里您的二进制文件被错误地保存为Windows上的文本,导致每个'\n'都被转换为'\r\n'。要解决此问题,您必须将'\r\n'重新转换回'\n'。只要文件不是巨大,通常不会很痛苦。

这是一个相对完整的示例:

import sys
import numpy as np

src = sys.argv[1]  # path to your file

data = open(src).read().replace('\r\n', '\n') # read and replace file contents
dst = src + ".tmp"
open(dst, "w").write(data) # save a temporary file

world = pickle.load(open(dst, "rb"), encoding='latin1')

答案 1 :(得分:0)

好的,我只需要自己解决这个问题,然后我就解决了。您所要做的就是将所有“\r\n”更改为“\n”。您可以通过多种方式执行此操作。您可以进入 Notepad++ 并将行尾从 CR LF 更改为 LF。或者你可以通过编程来做

open(newfile, 'w', newline = '\n').write(open(oldfile, 'r').read())