python: ImportError: невозможно импортировать имя 'X' при импорте класса из файла на один уровень выше - PullRequest
0 голосов
/ 10 сентября 2018

У меня есть следующая структура в моем проекте 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? Я читал множество похожих тем об импорте здесь, но ни одно из решений / советов не помогло мне решить эту конкретную ситуацию.

...