Как импортировать класс из каталога в потомки другого каталога - PullRequest
0 голосов
/ 03 мая 2019

В настоящее время я пытаюсь импортировать класс из каталога в дочерний каталог другого каталога.Я стараюсь не использовать sys.path и использовать относительный импорт, однако он продолжает выдавать ошибку о попытке относительного импорта без родительского пакета.Так что я не знаю, возможно ли импортировать класс из каталога, который имеет более высокий уровень в дереве проекта, внуку другого каталога?В этом случае я хочу импортировать класс ModelTest в model.py в папке приложения в файл output.py.Все подкаталоги имеют __init__.py, кроме каталога myproject.

Спасибо

Вот дерево моего проекта, app и mainModel на одном уровне:

myproject
  /mainModel
    /api
       /script
          /output.py

  /app
    /model.py

Django REST framework

1 Ответ

0 голосов
/ 04 мая 2019

Если вы пытаетесь сделать from ....app.model import ModelTest из myproject/mainModel/api/scripts/output.py, тогда это не будет работать:

  • from .sibling_module import something пытается импортировать something из "родственного модуля" sibling_module изтекущий пакет "(myproject/mainModel/api/scripts/sibling_module.py:something)
  • from ..sibling_of_current_package import foo: идет в" родительский пакет текущего пакета текущего модуля ", затем в модуль" sibling_of_current_package "
  • ...
  • Важнейшей частью здесь является «что-то из / 101 * * ПАКЕТА », и у вас нет myproject/__init__.py, поэтому app и mainModel являются пакетами верхнего уровня.

Это означает, что вы не можете «импортировать что-либо, кроме них», используя относительный импорт.Так что в вашем случае вам нужно использовать абсолютный импорт (from app.model import ModelTest)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...