ModuleNotFoundError: нет модуля с именем 'numpy.core.multiarray \ r' - PullRequest
0 голосов
/ 02 октября 2019

Я пытаюсь загрузить файл 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", но все еще получил ошибку, как я могу это исправить?

1 Ответ

0 голосов
/ 30 октября 2019

Я думаю, что здесь есть две проблемы.

Во-первых, ваш рассол является или содержит NumPy объект, который не является частью стандартной библиотеки. Поэтому вы должны убедиться, что NumPy установлен в вашу текущую среду Python и импортирован за до того, как попытается загрузить засоленный объект. В зависимости от настроек установка может быть такой простой, как

pip install numpy

. Затем необходимо добавить строку

import numpy as np

в начало вашего сценария.

Во-вторых, похоже, что Python столкнулся с этой проблемой , где ваш двоичный файл был ошибочно сохранен как текст в 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')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...