Я знаю, что об этом спрашивали несколько раз, но до сих пор неясно, когда мне следует добавить оператор импорта в __init__.py
. Вот моя python структура
root/
├── subpkg/
│ ├── __init__.py
│ ├── run.py
│ └── subpkg2/
│ ├── __init__.py
│ ├── a.py
│ └── b.py
├── subpkg3/
│ ├── __init__.py
│ └── unittest.py
└── tst.py
Вот как файлы связаны друг с другом.
root/subpkg/run.py
имеет класс TmpClass
, и этот класс вызывает и root/subpkg/subpkg2/a.py
, и root/subpkg/subpkg2/b.py
.
Оба root/subpkg3/unittest.py
и root/tst.py
звонят TmpClass
по from subpkg.run import TmpClass
. Вот мой первый вопрос: я правильно понял, что оператор импорта должен работать на основе выполняемого сценария, верно? Даже папка, которую я выполняю, из root
, верно? Я думаю, что root/tst.py
в порядке, но я не понимаю, кого root/subpkg3/unittest.py
импортирует таким образом. Разница лишь в том, что root/subpkg3/unittest.py
запускается в режиме юнит-теста. Если влияет на sys.path
?
Второй вопрос заключается в том, что root/subpkg/__init__.py
пусто и root/subpkg/subpkg2/__init__.py
должен импортировать как a.py
, так и b.py
на from subpkg.subpkg2 import a
, from subpkg.subpkg2 import b
. Без этих двух операторов импорта выдает ошибку. Когда я должен поставить оператор импорта в __init__.py
?