Flask-CLI не может запустить приложение?
Я разрабатываю REST API с использованием фляги и фляги-restful. В настоящее время у меня проблемы с flask-cli, так как в корпоративной среде я не могу запустить приложение. В чем может быть проблема?
На предприятии мы используем среды conda для приложений на python 3. В настоящее время среда для API состоит из Python 3.6.8 с колбой 1.0.2 и колбы-отдыха 0,37, работающей на CentOS 7. Даже воссоздавая среду по требованиям или enviroment.yml Конды, я не мог запустить приложение, иначе с моей личной машины, которая является Ubuntu 18.04, с miniconda3 и env python 3.6.8, с теми же пакетами фляги, и я могу тестировать без проблем.
Ошибка:
File "/home/user/opt/miniconda3/envs/comands/lib/python3.6/site-packages/flask/cli.py", line 235, in locate_app
__import__(module_name)
ModuleNotFoundError: No module named 'main'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/user/opt/miniconda3/envs/comands/lib/python3.6/site-packages/flask/cli.py", line 325, in __call__
self._flush_bg_loading_exception()
File "/home/user/opt/miniconda3/envs/comands/lib/python3.6/site-packages/flask/cli.py", line 313, in _flush_bg_loading_exception
reraise(*exc_info)
File "/home/user/opt/miniconda3/envs/comands/lib/python3.6/site-packages/flask/_compat.py", line 35, in reraise
raise value
File "/home/user/opt/miniconda3/envs/comands/lib/python3.6/site-packages/flask/cli.py", line 302, in _load_app
self._load_unlocked()
File "/home/user/opt/miniconda3/envs/comands/lib/python3.6/site-packages/flask/cli.py", line 317, in _load_unlocked
self._app = rv = self.loader()
File "/home/user/opt/miniconda3/envs/comands/lib/python3.6/site-packages/flask/cli.py", line 372, in load_app
app = locate_app(self, import_name, name)
File "/home/user/opt/miniconda3/envs/comands/lib/python3.6/site-packages/flask/cli.py", line 246, in locate_app
'Could not import "{name}".'.format(name=module_name)
flask.cli.NoAppException: Could not import "main".
Основной сценарий:
from app import create_app, db
from flask_migrate import Migrate
app = create_app('development')
Migrate(app,db)
@app.shell_context_processor
def shell_context():
return dict(
app = app,
db=db
)
Скрипт init.py:
from flask_restful import Api
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from config import config
db = SQLAlchemy()
def create_app(config_name):
app = Flask(__name__)
app.config.from_object(config[config_name])
api=Api(app, prefix="/api/v1")
db.init_app(app)
from app.resources.catcherDicts import Catcher
api.add_resource(Catcher, "/catcher")
return app
Я хочу иметь возможность запускать тесты и запускать приложения в среде компании. Потому что даже экспорт пути приложения с export FLASK_APP = main.py
команда flask run
не может запустить приложение.
1 ответ
Ошибка:
ModuleNotFoundError: нет модуля с именем 'main'
говорит вам, что не может найти main.py
модуль из вашего cli.py
модуль. Это происходит потому, что вы установили точку входа в свое приложение как main.py
с этой строкой кода: export FLASK_APP = main.py
, Я подозреваю, что эта переменная среды неверна, я бы попытался запустить ваш файл ввода напрямую и посмотреть, работает ли он, если да, то ваша переменная среды неверна. Кроме того, убедитесь, что ваш <path>
устанавливается соответствующим образом, если вы не запускаете файл из каталога, содержащего вашу точку входа, в противном случае flask run
не будет работать.
Надеюсь, это поможет!