Ошибка Python ImportError, которая меня озадачила (уже искал похожие посты на stackoverflow, но безуспешно)

Я создаю API с помощью django ninja, по соображениям дизайна я использую некоторую логику внутри microservice/logic/one_module.py, которая должна получать JSON данные из microservice/service/repository.py

Вот структура моего проекта:

|   .coveragerc
|   manage.py
|   pytest.ini
|   
+---microservice
    |   asgi.py
    |   models.py
    |   settings.py
    |   urls.py
    |   wsgi.py
    |   __init__.py
    |   
    +---logic
    |       config.py
    |       correlate.py
    |       correlation_rules.py
    |       generate_ticket.py
    |       send_ticket.py
    |       startup.py  <--------- Code is being executed here
    |       temp.py
    |       __init__.py
    |   
    |           
    +---service
    |   |   application.py
    |   |   domain.py
    |   |   repository.py   <--------- Data is here (must be imported)
    |   |   __init__.py
    |   |   
    |   +---schemas
    |   |       application.py
    |   |       domain.py
    |   |       repository.py
    |   |       __init__.py
    |   |       
    |   +---tests
    |       |   test_application.py
    |       |   test_domain.py
    |       |   test_logic.py
    |       |   test_repository.py
    |       |   __init__.py
    |       |   
    |       +---json
    |               alert_1.json
    |               client_1.json
    |               secrets_1.json
    |           
    +---static
    |       logo.png
    |       script.js
    |       styles.css
    |       
    +---templates
            base.html
            email.html

В файле service/repository.py у меня есть:

json_call = requests.get(...etc...)
clients, alerts, secrets = ...comprehension to get the data as dict...

В файле logic/startup.py у меня есть:

from microservice.service.repository import clients, secrets, alerts

clients = ...some code using the data...

Запустив его таким образом, он выдает ошибку:

Traceback (most recent call last):
  File "...windows_path...\Projects\Correlator\microservice\microservice\logic\startup.py", line 1, in <module>
    from microservice.service.repository import clients, secrets, alerts
ModuleNotFoundError: No module named 'microservice'

VSCode находит его просто отлично, однако я могу также попробовать относительный импорт:

from ..service.repository import clients, secrets, alerts

clients = ...some code using the data...

Запустив его таким образом, он выдает ошибку:

Traceback (most recent call last):
  File "...windows_path...\Projects\Correlator\microservice\microservice\logic\startup.py", line 1, in <module>
    from ..service.repository import clients, secrets, alerts
ImportError: attempted relative import with no known parent package

VSCode тоже находит его без проблем. Он также корректно перенаправляет на __init__.py при попытке проверить его в IDE. Я скопирую сообщение print(sys.path), чтобы вы знали, что с ним происходит.

['...windows_path...\\Projects\\Correlator\\microservice\\microservice\\logic', '...windows_path...\\AppData\\Local\\Programs\\Python\\Python312\\python312.zip', '...windows_path...\\AppData\\Local\\Programs\\Python\\Python312\\DLLs', '...windows_path...\\AppData\\Local\\Programs\\Python\\Python312\\Lib', '...windows_path...\\AppData\\Local\\Programs\\Python\\Python312', '...windows_path...\\Projects\\Correlator\\venv', '...windows_path...\\Projects\\Correlator\\venv\\Lib\\site-packages']

Попытка использовать sys.path.append (я хочу избежать этого любой ценой, я знаю, что написание кода импорта в __init__.py может быть решением) тоже не работает, я вставлю код и traceback.

import sys
import pathlib
import os
print("CWD WITH OS --->",os.getcwd())
sys.path.append(str(pathlib.WindowsPath().cwd()))
print("PYTHONPATH ---> ", sys.path)
from microservice.service.repository import clients, secrets, alerts
CWD WITH OS ---> ...windows_path...\Projects\Correlator\microservice\microservice\logic

PYTHONPATH --->  ['...windows_path...\\Projects\\Correlator\\microservice\\microservice\\logic', '...windows_path...\\AppData\\Local\\Programs\\Python\\Python312\\python312.zip', '...windows_path...\\AppData\\Local\\Programs\\Python\\Python312\\DLLs', '...windows_path...\\AppData\\Local\\Programs\\Python\\Python312\\Lib', '...windows_path...\\AppData\\Local\\Programs\\Python\\Python312', '...windows_path...\\Projects\\Correlator\\venv', '...windows_path...\\Projects\\Correlator\\venv\\Lib\\site-packages'], '...windows_path...\\Projects\\Correlator\\microservice\\microservice\\logic']

Traceback (most recent call last):
  File "...windows_path...\Projects\Correlator\microservice\microservice\logic\startup.py", line 1, in <module>
    from microservice.service.repository import clients, secrets, alerts
ModuleNotFoundError: No module named 'microservice'

Я пытался сделать test-A.py и test-B.py с foo() и var:int внутри /logic и /service, но та же проблема, не удалось решить. Честно говоря, я не знаю, что вызывает ошибку, возможно, это особенность Django, в каждой директории есть пустой __init__.py

Большое спасибо за помощь, я действительно видел 8-10 сообщений на StackOverflow, но некоторые из них были разными, а некоторые вообще не решали проблему

Вернуться на верх