У меня есть следующая структура в моем проекте Python:
src
|_usr
|_api
| |_db
| |_ __init__.py (lets call it db/__init__.py_)
| |_answers.py
|_ __init__.py (lets call it api/__init__.py)
|_schema1.py
В schema1.py я определяю класс Answer
, который необходимо импортировать в файл db / answers.py.
Итак, начало answers.py
файла:
"""put and get from dynamoDB answers functions."""
import boto3
from .. import Answers
def getAnswers(userId: str, version: int) -> Answers:
Затем в файле api/__init__.py
:
from .core import app
from .schema1 import Answers
__all__ = ['app', 'Answers']
И, наконец, в файле schema1.py
есть Ответ Объявление класса:
from typing import Dict, List, NamedTuple, Union
import graphene
from .db import get_questionnaire_in_dict, getAnswers, putAnswers
class Answer(graphene.ObjectType): # type: ignore
"""Single question object, consists of question ID and selected answers."""
Всякий раз, когда я запускаю код, я получаю сообщение об ошибке:
__import__(module)
File "/project-root/src/user/api/__init__.py", line 2, in <module>
from .core import app
File "/project-root/src/user/api/core.py", line 6, in <module>
from .schema1 import schema1
File "/project-root/src/user/api/schema1.py", line 8, in <module>
from .db import get_questionnaire_in_dict, getAnswers, putAnswers
File "/project-root/src/user/api/db/__init__.py", line 2, in <module>
from .answers import getAnswers, putAnswers
File "/project-root/src/user/api/db/answers.py", line 6, in <module>
from .. import Answers
ImportError: cannot import name 'Answers'
Вопрос в том, почему класс Ответы невидим в файле answers.py
?
Я читал множество похожих тем об импорте здесь, но ни одно из решений / советов не помогло мне решить эту конкретную ситуацию.