【问题标题】:Issues when deploying flask app to Heroku将烧瓶应用程序部署到 Heroku 时的问题
【发布时间】:2022-01-14 05:40:14
【问题描述】:

我最近浏览了这个flask tutorial,现在正尝试将我的应用程序部署到heroku。

我可以使用命令gunicorn "platform:create_app()" 在本地运行应用程序。由于该命令正常工作,我添加了一个包含 web: gunicorn platform.'create_app()' 的 Procfile,但是当我尝试部署到 Heroku 时,我收到错误 ModuleNotFoundError: No module named 'platform.create_app()'

【问题讨论】:

    标签: python flask heroku


    【解决方案1】:

    我四处搜索,找不到这个问题的真正明确答案,尽管我认为this thread 尤其是this answer 可能有助于阐明一些问题。

    我可以告诉你的是,我为 Flask 应用程序在 Heroku 中部署创建的 Procfile 中没有一个包含 .py 或括号。

    对我来说典型的 Procfile 如下所示:

    web: gunicorn app:app
    

    然后在同一个目录中是主应用文件app.py,其中包含一行:

    app = Flask(__name__)
    

    据我所知,命令中的第一个app 指向文件(模块)app.py,第二个指向定义为Flask(__name__) 的变量app


    因此,对于您的情况,以下应该有效:

    web: gunicorn platform:app
    

    假设您有一个名为 platform.py 的 Python 模块,然后在该文件中您需要有一行

    app = create_app()
    

    您引用的教程中的 create_app() 函数返回一个 Flask 对象,因此应该可以完成这项工作。

    【讨论】:

    • 感谢您的回复,我认为部分问题是根据我遵循的教程,我的名为 platform.py 的文件实际上是 __init__.py。我不太确定如何在 Procfile 中引用这个 __init__.py 文件。 web: gunicorn __init__:app 似乎不对。
    • __init__.py 位于相对于包含 Procfile 的基本目录的文件夹 flaskr 中,对吧?在包含from flaskr import create_appapp = create_app() 的基本目录中创建一个文件app.py,然后对Procfile 使用web:gunicorn app:app`。
    猜你喜欢
    • 2021-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-13
    相关资源
    最近更新 更多