python - 当我将主 Flask python 文件移动到模块中时,`gcloud app deploy` 会抛出`No module named 'main'`
问题描述
我有一个非常简单的 Flask 应用程序,由一个文件组成,main.py
.
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return "Hello world."
我在项目目录中还有另一个文件app.yaml
,它由一行组成:
runtime: python37
如果我gcloud app deploy
在这个或烧瓶运行上运行,该页面在谷歌云和本地都正确呈现,显示一个显示“Hello world”的页面。
但是,如果我移至main.py
,./app/__init__.py
则gcloud 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'"
关于这里的问题有什么想法吗?
解决方案
如果您未entrypoint
在 YAML 文件中定义,App Engine 将配置并启动 Gunicorn 网络服务器。
GCloud 提供的默认配置为:
gunicorn -b :$PORT main:app
因此,如果您的入口点不是,则需要配置入口点字段main.py
推荐阅读
- python - 如何解决 IndexError:列表理解语句中标量变量的无效索引?Python 3.7.7
- reactjs - 带有 setState 和多个组件的空白页
- c++ - 在 llvm - windows 中仅安装 clang 和 clang++
- javascript - 如何通过 React 在 p5 中使用 async 和 await?
- google-api - Display & Video 360 无权尝试对 ID 为 PARTNER 的操作
- python-3.x - 在 TensorFlow 中使用 SSIM 损失返回 NaN 值
- regex - 谷歌表格查找和替换正则表达式
- unix - 是否可以使用 unix 对话框输入框进行多行输入
- python - 在 x 轴上绘制元组列表
- ansible - 如何在 ansible playbook 中漂亮地打印电子邮件正文?