Проблема, вероятно, связана с тем, что pkl использует тип / класс, который не известен в вашей среде. Если вы написали этот файл, просто импортируйте / объявите отсутствующий тип (вероятно, ml.model.project_model
).
В любом случае - то, что вы пытались сделать, это перевести объект в pkl в base 64, а не сам файл, как вы сказали (имеется в виду - не используя сам pkl). Например, если pkl содержит словарь d
, вы пытаетесь получить base64 d
. Но b64encode
должен получить строку или буфер, поэтому он не будет работать.
Итак, я думаю, что вы действительно хотите сделать, это сбросить d
в файл pkl (это файл, который у вас уже есть) и перевести содержимое файла в base64. Для этого вам не нужно использовать dump
, просто сделайте-
with open(DIR_PATH + 'd885d7a4bbb742cbb397c2642339e950.pkl', 'rb') as f:
serialized_str = base64.b64encode(f.read())
print serialized_str
Затем другой стороне потребуется открыть base64 (используя b64decode
), записать его в файл, а затем открыть этот файл с помощью pickle.load()
, чтобы получить исходный объект (в моем примере - d
) , Это сработает, если у него объявлен модуль ml.model.project_model
.