我的烧瓶应用程序存在以下问题。我具有以下文件结构,如下所示。似乎内部文件包含不起作用。谁能帮我解决问题。我对python和flask有点陌生。
app.py, db.py, blacklist.py
全部仅位于根目录中。
===== app.py =====
import flask
from flask_restful import Api
from flask_jwt_extended import JWTManager
from db import db
from blacklist import BLACKLIST
app = flask.Flask(__name__)
app.config["DEBUG"] = True
@app.route('/', methods=['GET'])
def home():
return "<h1>Api Testing</h1><p>This is just testing endpoint.</p>"
app.run()
==== db.py ====
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
==== blacklist.py ====
BLACKLIST = set()
flask.cli.NoAppException
flask.cli.NoAppException: While importing "xxxxxxx.app", an ImportError was raised: Traceback (most recent call last): File "/usr/local/lib/python3.7/site-packages/flask/cli.py", line 240, in locate_app __import__(module_name) File "/Users/xxxxx/Documents/Vhosts/xxxxx/app.py", line 5, in <module> from db import db ModuleNotFoundError: No module named 'db'
答案 0 :(得分:0)
首先,您应该将app.run()
调用包装在 main 块中,否则,即使您仅导入对象,服务器也将尝试启动(Flask CLI就是这种情况)与您通话flask run
)。 extensively elsewhere
import flask
from flask_restful import Api
from flask_jwt_extended import JWTManager
from db import db
from blacklist import BLACKLIST
app = flask.Flask(__name__)
app.config["DEBUG"] = True
@app.route('/', methods=['GET'])
def home():
return "<h1>Api Testing</h1><p>This is just testing endpoint.</p>"
if __name__ == '__main__':
app.run()
这可能会解决您的问题,但是您应该更新您的帖子,使其也包含其他文件db.py
和blacklist.py
的内容。在您的错误消息中,提到了db
模块,并且没有其他内容。
答案 1 :(得分:0)
开始使用时,可以通过保持名字的唯一性来避免很多问题。在这种情况下,代替
from db import db
重命名文件,然后执行类似的操作
from mydb import db
然后,一旦您可以正常工作,就逐步进行操作,注意在哪里停止工作,并以此为借口探索Python如何处理名称空间。
答案 2 :(得分:0)
我使用终端如下解决此问题:
$export FLASK_APP=app
$flask run
由于.py扩展名,出现了此问题。