Почему Google App Engine не может найти мой модуль (Python 3)? - PullRequest
1 голос
/ 08 января 2020

Я новичок в Google App Engine, и у меня проблема с тем, что приложение не находит мой модуль. Я получаю ошибку line 5, in <module> import foo as bar ModuleNotFoundError: No module named 'foo'. У меня есть текущая структура файла, как показано ниже (после великолепного учебника для Flask).

Проблема в том, что routes.py не может импортировать foo.py.

  • ядро ​​приложения: /
    • приложение
      • статическое / css
      • шаблоны
      • __ init__.py
      • foo.py
      • rout.py
    • app.yaml
    • config.py
    • main.py
    • needs.txt
    • source-context. json

Почему это так? Существуют ли особые требования к тому, как файлы структурируются в App Engine, поскольку это работает локально?

Кроме того, просто для того, чтобы все работало, я попытался использовать код в модуле foo вместо маршрутов, и код работает. Но код там не принадлежит, и я хочу структурировать его лучше, но приложение разрывается при разделении. В конце я хотел бы добавить каталог "механизм приложений": / app / libs (или еще по рекомендации), где я храню свои пользовательские вещи.

EDIT (добавить пример кода из маршрутов .py)

from flask import render_template, flash, redirect, url_for
from app import app
from app.forms import LookupForm
import logging
import foo as bar

@app.route("/")
@app.route("/index")

def index():
    return render_template("index.html")

1 Ответ

3 голосов
/ 08 января 2020

Мне удалось воспроизвести ошибку, с которой вы столкнулись. Вот мои наблюдения:

  • Вы храните модуль foo в локальной папке с именем app (подкаталог, в котором находится ваш main.py). файл).
  • Чтобы ссылаться на модуль в этой ситуации, вам нужно будет включить имя подкаталога при выполнении импорта.

Измените следующую строку в вашем файле rout.py :

import foo as bar

на:

import app.foo as bar

Я протестировал это решение, и оно сработало для меня. Пожалуйста, дайте мне знать, если это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...