ImportError: невозможно найти классы, определенные в импортированном модуле - PullRequest
0 голосов
/ 13 февраля 2019

У меня есть приложение фляги, которое я пытаюсь проверить, но у меня возникает ошибка импорта, которая медленно убивает меня.Это классический «работал час назад, а теперь нет».

Моя структура пакета выглядит следующим образом:

__init__.py
main.py
  /tasks
    email_utils.py
    send_api.py
    __init__.py

send_api.py содержит класс с именем SendEmail, который я пытаюсьимпорт из main.py для добавления в качестве ресурса, например:

from tasks.send_api import SendEmail

, что вызывает ошибку ImportError.Я также попытался

from tasks import send_api
app = Flask(__name__)
api = Api(app)
api.add_resource(send_api.SendEmail, '/send')

, но в последней строке выдается ошибка AttributeError, в которой говорится, что SendEmail не является атрибутом send_api.Если я добавляю точку останова после простого импорта send_api и проверяю ее, используя dir (send_api), имя класса не отображается в атрибутах, равно как и другие глобальные переменные / классы, за исключением некоторых типов импорта.Мне также странно, что PyCharm, похоже, распознает SendEmail как класс send_api и не выдает мне никаких предупреждений.

send_api.py структурирован так

from flask_restful import Resource
from flask_restful import abort as fr_abort
from werkzeug.wrappers import BaseResponse as Response

from customexceptions import MissingEnvironmentVariables
from tasks import email_utils

class SendEmail(Resource):
    #class logic here

Если я простоимпортировать send_api из задач в main.py и dir (send_api), единственные значимые результаты, которые я получаю, - это MissingEnvironmentVariables, Resource, Response и fr_abort (все вещи, импортированные в send_api.py, за исключением email_utils, которые, похоже, должны отображаться. Дажеemail_utils, похоже, не подняли.

Я уже давно занимаюсь этим и на самом деле просто не знаю, как это исправить. Мне также кажется странным, что импортироватьemail_utils.py от send_api.py Я должен сделать

from tasks import email_utils

как

import email_utils

или

import .email_utils

, похоже, тоже не работает.

Извините за длинный пост, пожалуйста, дайте мне знать, если я явно что-то делаю не так, или укажите на связанный вопрос, который поможет.

...