在Flask中重用app对象

时间:2015-03-12 01:29:21

标签: python 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错误。

1 个答案:

答案 0 :(得分:1)

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

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

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

from menumaster import app as application