Я пытаюсь загрузить маринованный пользовательский класс в другой каталог, и у меня возникают две ошибки.
Структура файла выглядит следующим образом
/project
|
|--/data
|
|--/src
|
| |--__init__.py
|
| |--/calculate
| |--__init__.py
| |--run_calc.py
| |--calc_class.py
|
| |--/plot
| |--__init__.py
| |--run_plotter
В run_calc.py , я вычисляю вещи и выбираю их, импортируя пользовательский класс следующим образом
import pickle
from cust_class import animal
instance_animal = animal(specie, age)
with open('../../data/picked_class.pickle', 'wb') as f:
pickle.dump(instance_animal, f)
cust_class.py похож на это
class animal:
def__init__(self, specie, age)
self.specie = specie
self.age = age
Теперь, когда я пытаюсь загрузить рассол в run_plotter в другой каталог, как показано выше, я получаю следующую ошибку:
run_plotter.py
with open('../../data/pickled_class.pickle', 'rb') as f:
loaded = pickle.load(f)
вывод консоли
$python run_plotter.py
ImportError: No module named cust_class
Теперь, если я скопирую и вставлю calc_class.py в каталог / plot рядом с run_plotter.py, pickle.load работает.Но, если я пытаюсь импортировать calc_class.py внутри run_plotter.py , как показано ниже
from ..parser import bsig_class
, выдает ошибку
$python run_plotter.py
ValueError: attempted relative import beyond top-level package
Вопрос в том, нужно ли в pickle импортировать класс для загрузки классов в другой каталог?Как импортировать этот класс, чтобы файл pickle мог быть загружен в другой каталог?