Flask-CLI 无法运行应用程序?

vic*_*.py 0 python flask flask-cli

我正在使用flask 和flask-restful 开发REST API。我目前在使用flask-cli 时遇到问题,因为在公司环境中我无法运行该应用程序。可能是什么问题?

在企业中,我们使用 conda 环境,用于 python 3 应用程序。目前api的环境由python 3.6.8和flask 1.0.2和flask-restful 0.37组成,在CentOS 7上运行。即使通过conda的需求或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".
Run Code Online (Sandbox Code Playgroud)

脚本主:


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
    )
Run Code Online (Sandbox Code Playgroud)

脚本初始化.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
Run Code Online (Sandbox Code Playgroud)

我希望能够在公司环境中运行测试并运行应用程序。因为即使使用export FLASK_APP = main.py命令导出应用程序路径flask run也无法运行应用程序。

Nat*_*han 6

错误:

ModuleNotFoundError: 没有名为“main”的模块

告诉您它无法main.py从您的cli.py模块中找到该模块。这是发生,因为你设置你的切入点,以您的应用程序main.py与这行代码:export FLASK_APP = main.py。我怀疑这个环境变量不正确,我会尝试直接运行您的入口文件并查看它是否有效,如果是,您的环境变量不正确。此外,<path>如果您不是从包含入口点的目录运行文件,请确保您的设置正确,否则flask run将无法工作。

希望这有帮助!