在 Flask 中重用应用程序对象

Reuse app object in Flask

我正在尝试在另一个模块中的 flask 中重用 app 对象。

目前我的目录结构是:

/xampp/code/MenuMaster
    __init__.py
    menumaster
        __init__.py
        menumaster_app.py
        sqltables.py


我的第一个 __init__.py 文件包含:

app = Flask(__name__)
app.config['SECRET_KEY'] = 'some key here'

第二个 __init__.py 文件是空的。

menumaster_app.py 使用此应用程序对象。 sqltables.py也需要用到这个app对象。

这是我的 .wsgi 文件:

import sys
sys.path.insert(0, 'C:/xampp/code/MenuMaster')
from menumaster_app import app as application

我目前在 .wsgi 中收到错误:

 File "C:/xampp/htdocs/flaskapp/flask.wsgi", line 5, in <module>
 from menumaster_app import app as application   
 ImportError: No module named menumaster_app


如果我将 flask.wsgi 文件更改为:

sys.path.insert(0, 'C:/xampp/code/Menumaster/menumaster')

我收到错误:

File "C:/xampp/htdocs/flaskapp/flask.wsgi", line 5, in <module>
from menumaster_app import app as application
File "C:/xampp/code/Menumaster/menumaster\menumaster_app.py", line 44, in <module>
@app.route('/restaurants', methods = ['GET'])
NameError: name 'app' is not defined

如果我完全以错误的方式解决这个问题,我很想听听正确的方法来完成这个。

如有任何帮助,我们将不胜感激。

更新

我已将文件结构更改为:

menumaster_project
    menumaster
        __init__.py
        menumaster_app.py
        sqltables.py        

flask.wsgi

import sys
sys.path.insert(0, 'C:/xampp/code/menumaster_project')
from menumaster import app as application

__init.py__

from flask import Flask
app = Flask(__name__)
app.config['SECRET_KEY'] = 'some key here'

但是,我目前遇到 404 错误。

您的申请结构很奇怪。更常见的布局是:

menumaster_project/
├─── menumaster/
│   ├── __init__.py
│   ├── sqltables.py
│   └── my_subpackage/
│      ├── __init__.py
│      └── my_submodule.py
└── other_project_file.txt

其中 menumaster_project 将在 Python 路径上。该应用程序将在 menumaster_project/menumaster/__init__.py 中定义。导入应用程序将是:

from menumaster import app as application