Как правильно импортировать модули при работе в подкаталоге? - PullRequest
0 голосов
/ 27 июня 2019

У меня есть проект, в котором я хочу структурировать код по слоям.Различные части программы делают очень разные вещи, и я хотел бы иметь чистый верхний уровень, который связывает весь код в подкаталогах вместе.

Однако я борюсь с импортом модулей правильно.

Скажем, у меня есть структура

Project
└──manage.py
   └──part a
      ├──script_a.py
      ├──__init__.py
      └──modules_a
         ├──module_a1.py
         ├──module_a2.py
         ├──module_a3.py
         └──__init__.py
   └──part b
      ├──script_b.py
      ├──__init__.py
      └──modules_b
         ├──module_b1.py
         ├──module_b2.py
         ├──module_b3.py
         └──__init__.py

Если я пишу код в script_a.py, который зависит от чего-то из module_a1.py Я использую

from modules_a import module_a1

Это работает, но VSКод никогда не радует импорт, всегда помечая импорт как ошибку.Поэтому мне интересно, есть ли что-то, что я неправильно понял, тем более что script_a.py нет в корневой папке?

Ответы [ 2 ]

0 голосов
/ 27 июня 2019

Я решил решить эту проблему, добавив тестовый файл в корневую папку и запустив сценарий только из тестового файла, который будет иметь функциональность, аналогичную manage.py, который будет моим сценарием выполнения позже.

0 голосов
/ 27 июня 2019

Если вы находитесь в пакете и хотите получить доступ к подпакету, вы должны поставить . перед подпакетом.Поэтому измените оператор импорта с

from modules_a import module_a1

на

from .modules_a import module_a1

Тогда ошибка исчезнет.

...