Flask-CLI не может запустить приложение? - PullRequest
0 голосов
/ 26 марта 2019

Я разрабатываю REST API, используя флягу и флеш-отдых.В настоящее время у меня проблемы с 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".

Script 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 Ответ

2 голосов
/ 26 марта 2019

Ошибка:

ModuleNotFoundError: Ни один модуль с именем 'main'

не сообщает, что не может найти модуль main.py из вашего cli.pyмодуль.Это происходит потому, что вы задали точку входа для своего приложения как main.py с этой строкой кода: export FLASK_APP = main.py.Я подозреваю, что эта переменная среды неверна, я бы попытался запустить ваш файл ввода напрямую и посмотреть, работает ли он, если да, то ваша переменная среды неверна.Кроме того, убедитесь, что ваш <path> установлен правильно, если вы не запускаете файл из каталога, содержащего вашу точку входа, иначе flask run не будет работать.

Надеюсь, это поможет!

...