У меня странная проблема относительного импорта, которую я с трудом понимаю. Вот моя структура проекта:
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? Нужно ли настраивать среду запуска специально для этого экземпляра?