【问题标题】:flask run vs. python烧瓶运行与 python
【发布时间】:2018-03-12 15:13:19
【问题描述】:

我无法使用“python”方法运行我的烧瓶应用程序。我使用没有问题

export FLASK_APP=microblog.py
flask run

但尝试使用

python microblog.py

会导致以下错误

ImportError: No module named 'app'

我的 microblog.py 文件如下所示:

from app import app, db
from app.models import User

@app.shell_context_processor
def make_shell_context():
    return {'db': db, 'User': User}

我的__init__.py 文件如下所示:

from flask import Flask
from config import Config
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate

from flask_login import LoginManager


app = Flask(__name__)
app.config.from_object(Config)
db = SQLAlchemy(app)
migrate = Migrate(app, db)

login = LoginManager(app)
login.login_view = 'login'

from app import routes

if __name__ == '__main__':
    app.run()

这些文件所在的文件夹称为“app”。我试过把

if __name__ == '__main__':
    app.run()

在microblog.py文件中也是这样,也失败了。

我还有用于模板/静态/等的文件夹。和一个路由文件,我在其中运行所有@app.route() 命令

再次,当我在终端中运行“flask run”时一切正常,但当我尝试使用“python microblog.py”时它就崩溃了。我正在尝试在 AWS 上启动该应用程序,几乎每个教程都要求使用“python”方法调用应用程序。任何帮助表示赞赏。

【问题讨论】:

  • 您在同一文件夹中有一个名为app.py__init__.py 的文件?
  • @Abe 我在同一个文件夹中有microblog.py__init__.py,是的。它们都位于 app 文件夹中。

标签: python flask


【解决方案1】:

[已解决]

我的目录混淆了。我将microblog.py 拉回app 文件夹之外,并且能够毫无问题地运行python microblog.py,而无需进行任何编辑。

事后看来,我可能应该在一开始就发布所有内容的文件结构。

【讨论】:

    【解决方案2】:

    from app import app, db 这一行中,您尝试导入一个名为app.app 的模块,但它显然不存在于您的项目源代码中。

    尝试在app/路径内创建一个名为app.py的文件,将__init__.py文件的所有内容复制并粘贴到其中。

    您的__init__.py 必须为空。这只是表明您的路径 app/ 是一个可导入的模块。

    See this article.

    【讨论】:

    • 感谢您的链接。我已经按照你的建议做了,虽然我可以让程序运行,但烧瓶从来没有为我提供最后访问所有内容的 ip(可能需要更多的修补才能使用你建议的方法)。我想我之前的__init__.py 文件要问的一个更好的问题是,为什么flask run 可以识别app 并显示正确的信息,但python microblog.py 不能?
    • 当你使用python运行时,没有服务器要启动,文件将被编译并且没有给出启动服务器的指令,当你使用flask时,它运行管理您的请求的服务器。这是因为app.run() 不在microblog.py 文件中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-01
    • 2014-04-06
    • 2018-07-09
    • 2022-01-19
    相关资源
    最近更新 更多