Не удается загрузить маринованный пользовательский класс в другой каталог, что происходит?Как мне импортировать необходимый класс? - PullRequest
0 голосов
/ 19 февраля 2019

Я пытаюсь загрузить маринованный пользовательский класс в другой каталог, и у меня возникают две ошибки.

Структура файла выглядит следующим образом

/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 мог быть загружен в другой каталог?

...