Flask, выбрасывающий AttributeError при невозможности найти переменную, несмотря на то, что она есть - PullRequest
0 голосов
/ 08 мая 2018

У меня есть небольшая проблема, Flask, кажется, думает, что в этих классах светокопий нет атрибута bp, и он добавляет маршруты для светокопий, и все же регистрирует ошибку, это приводит меня кwall.

app.py код импорта

for dirpath, dirnames, filenames in os.walk('blueprint'):

    for filename in filenames:
        if filename.endswith(".py"):
            fullpath = os.path.join(dirpath, filename).split(os.sep)
            module = ".".join(fullpath)[:-3]

            try:
                module = importlib.import_module(module)
                prefix = module.__name__.split('.')[-1:][0]
                if prefix.startswith('_'):
                    app.register_blueprint(module.bp)
                else:
                    app.register_blueprint(
                        module.bp, url_prefix=f'/{prefix}')
            except Exception as error:
                print(f"{type(error)} Unable to load {module}: {error}")

пример плана (т. е. index.py)

bp = Blueprint('', __name__)

@bp.route('/')
def index(*args, **kw):

    return render_template('index.html')

output

<class 'AttributeError'> Unable to load <module 'blueprint._index' from '~~~/blueprint/_index.py'>: module 'blueprint._index' has no attribute 'bp'

Как видите, переменная bp существует, и маршруты добавляются, но без try/except маршруты не добавляются .. егодовольно раздражает, и я предпочел бы не просто pass их ..

редактировать

дерево каталогов

  - app.py
  - blueprints/
      - index.py
      - etc.py
...