烧瓶导入本地文件

时间:2020-04-13 03:13:05

标签: python flask

我的烧瓶应用程序存在以下问题。我具有以下文件结构,如下所示。似乎内部文件包含不起作用。谁能帮我解决问题。我对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'

3 个答案:

答案 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.pyblacklist.py的内容。在您的错误消息中,提到了db模块,并且没有其他内容。

答案 1 :(得分:0)

开始使用时,可以通过保持名字的唯一性来避免很多问题。在这种情况下,代替

from db import db

重命名文件,然后执行类似的操作

from mydb import db

然后,一旦您可以正常工作,就逐步进行操作,注意在哪里停止工作,并以此为借口探索Python如何处理名称空间。

答案 2 :(得分:0)

我使用终端如下解决此问题:

$export FLASK_APP=app
$flask run

由于.py扩展名,出现了此问题。

相关问题