Я пытаюсь заставить python распознавать пакеты без использования sys.path.append()
Вот как выглядит каталог после добавления __init__.py
в каждый подкаталог
├── Config
│ ├── __init__.py
│ ├── augmentation_options.py
│ ├── beverly_hills.txt
│ ├── coco.txt
│ ├── set_annotation_conf.py
│ ├── voc_conf.json
│ ├── yolo3.cfg
│ └── yolo4.cfg
├── Data
│ ├── Photos
│ ├── TFRecords
│ ├── XML\ Labels
│ ├── __init__.py
│ └── bh_labels.csv
├── Docs
│ ├── Augmentor.md
│ ├── Evaluator.md
│ ├── Predictor.md
│ ├── Trainer.md
│ └── __init__.py
├── Helpers
│ ├── __init__.py
│ ├── __pycache__
│ │ └── utils.cpython-37.pyc
│ ├── anchors.py
│ ├── annotation_parsers.py
│ ├── augmentor.py
│ ├── dataset_handlers.py
│ ├── scratch
│ │ └── label_coordinates.csv
│ ├── utils.py
│ └── visual_tools.py
├── LICENSE
├── Logs
│ ├── __init__.py
│ └── session.log
├── Main
│ ├── __init__.py
│ ├── __pycache__
│ │ ├── __init__.cpython-37.pyc
│ │ └── models.cpython-37.pyc
│ ├── detector.py
│ ├── evaluator.py
│ ├── models.py
│ └── trainer.py
├── Models
│ └── __init__.py
├── Output
│ ├── Data
│ ├── Detections
│ ├── Evaluation
│ ├── Plots
│ └── __init__.py
├── README.md
├── Samples
│ ├── __init__.py
│ ├── anchors.png
│ ├── anchors_sample.png
│ ├── aug1.png
│ ├── data.png
│ ├── detections.png
│ ├── eval.png
│ ├── map.png
│ ├── pr.png
│ ├── sample_image.png
│ └── true_false.png
├── __init__.py
└── requirements.txt
Когда Я пробую это:
% cd Main
% python3 models.py
models.py
импорт из Helpers.utils
, поэтому я получаю обычную ошибку:
emadboctor@MacBook-Pro Main % python3 models.py
Traceback (most recent call last):
File "models.py", line 23, in <module>
from Helpers.utils import get_boxes, timer, default_logger, Mish
ModuleNotFoundError: No module named 'Helpers'
И ничто не меняет это поведение, кроме случаев, когда я это делаю :( внутри models.py и в каждом подкаталоге, содержащем python модулей)
import sys
sys.path.append('..')
Насколько я знаю, __init__.py
должен иметь какое-то отношение к таким проблемам, или в чем вообще смысл __init__.py
?
И, конечно, любой относительный импорт приводит к следующей ошибке:
in models.py
:
emadboctor@MacBook-Pro Main % python3 models.py
Traceback (most recent call last):
File "models.py", line 23, in <module>
from ..Helpers.utils import get_boxes, timer, default_logger, Mish
ImportError: attempted relative import with no known parent package
emadboctor@MacBook-Pro Main %