当我将主 Flask python 文件移动到模块中时,“gcloud 应用程序部署”抛出“没有名为“main”的模块”

Rob*_* Yi 1 python google-app-engine flask google-cloud-platform

我有一个非常简单的 Flask 应用程序,由单个文件main.py.

from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
    return "Hello world."
Run Code Online (Sandbox Code Playgroud)

我的项目目录中还有另一个文件 ,app.yaml它由一行组成:

runtime: python37
Run Code Online (Sandbox Code Playgroud)

如果我gcloud app deploy在此或 Flask 上运行,该页面会在谷歌云和本地上正确呈现,显示一个显示“Hello world”的页面。

但是,如果我移动main.py./app/__init__.pygcloud app deploy则不再呈现页面(即使flask run仍然正常工作!),给出 502 Bad Gateway 错误。日志给出错误:

File "/env/lib/python3.7/site-packages/gunicorn/util.py", line 350, in import_app
__import__(module)
ModuleNotFoundError: No module named 'main'"  
Run Code Online (Sandbox Code Playgroud)

关于这里的问题有什么想法吗?

rpa*_*ani 5

如果您未entrypoint在 YAML 文件中进行定义,App Engine 将配置并启动 Gunicorn Web 服务器。

GCloud提供的默认配置是:

gunicorn -b :$PORT main:app
Run Code Online (Sandbox Code Playgroud)

因此,如果您的入口点不是,则需要配置入口点字段main.py