Относительная проблема импорта python - почему это не работает? - PullRequest
0 голосов
/ 24 января 2020

У меня странная проблема относительного импорта, которую я с трудом понимаю. Вот моя структура проекта:

project
  bot_app
    app
      __init__.py
      stuff.py
  web_app
    app
      __init__.py
      other_scripts.py
      etc.py
      app_to_run.py

Все работает, когда я запускаю свое веб-приложение (его flask) с Gunicorn или Flask Run, который находит экземпляр приложения в init . py

CreateApp(ConfigFile)
    app = Flask() 
    functions_which_build_app()
    extension.init_app(app)
    return app

В моем скрипте app_to_run.py Я пытаюсь создать экземпляр тестового приложения с другой конфигурацией, а затем запустить его, вот так. Поэтому я в основном запускаю python run_test_app () в PyCharm (нажав Run)

from app import create_app
from app.config import TestConfig


def run_test_app():
    test_app = create_app(config=TestConfig)
    test_app.run(host='localhost', port='5000', debug=True, load_dotenv=True)

run_test_app()

Но я получаю ошибку:

from app import create_app
ImportError: cannot import name 'create_app' from 'app' (C:\Users\PycharmProjects\project\bot_app\app\__init__.py)

Я вижу, что он пытается получить от bot_app\app\ даже если сценарий находится в web_app\app, который я не понимаю? Поэтому я изменяю это:

from web_app.app import create_app
from web_app.app.config import TestConfig


def run_test_app():
    test_app = create_app(config=TestConfig)
    test_app.run(host='localhost', port='5000', debug=True, load_dotenv=True)

run_test_app()

Теперь я получаю сообщение об ошибке, что он не может найти app.loggers, хотя он определенно существует, поскольку он работает нормально. Я запускаю это в pyCharm и просто не понимаю?

  File "C:\Users\PycharmProjects\project\web_app\app\__init__.py", line 2, in <module>
    from app.loggers import logger, debug
ModuleNotFoundError: No module named 'app.loggers'

Это связано с PyCharm? Нужно ли настраивать среду запуска специально для этого экземпляра?

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