__init__.py не работает и вызывает ошибку ModuleNotFoundError - PullRequest
0 голосов
/ 27 мая 2020

Я пытаюсь заставить 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 % 
...