Я просмотрел различные ответы на связанные вопросы cPickle, но никто не помогает. Также не использует cloudpickle вместо cPickle.ImportError with cPickle
У меня есть модуль с именем MyModule, который определяет класс MyClass
Во-первых, я запустить сценарий в другую папку из папки в папку проекта. Я импортирую свой класс MyClass из проекта, создаю экземпляр класса и расчешите его на целевом пути.
sys.path.append(os.path.join(os.environ.get("PROJECT_ROOT"), 'src/'))
from MyModule import MyClass
class_instance = MyClass()
with gzip.open(os.path.join(target_path, 'net.p.gz'), "wb") as f:
cPickle.dump(class_instance, f)
Затем в моем основном проекте, я хочу, чтобы загрузить маринованный файл
from MyModule import MyClass
with gzip.open(os.path.join(os.environ['PROJECT_ROOT'], 'resources/net.p.gz'), 'rb') as f:
class_instance = cPickle.load(f)
Это приводит к
ImportError: No module named MyModule
Однако
test_instance = MyClass()
print (test_instance)
в том же печать файлов
<MyModule.MyClass object at 0x7fad03e3ead0>
Таким образом, модуль, очевидно, находится там, и его несовершенство.
Оба раза я имею в виду тот же модуль, он не меняет местоположение. Что мне не хватает?
@gplayer Вы правы. Моя ошибка была в том, что я думал, так как я уже в ~/work/repo/это на пути. Вы хотите передать это как ответ, чтобы я мог принять его? – Darina