在 Google App Engine 上运行 Python37 的问题
Posted
技术标签:
【中文标题】在 Google App Engine 上运行 Python37 的问题【英文标题】:Issue running Python37 on Google App Engine 【发布时间】:2019-02-28 08:17:56 【问题描述】:我知道有人问过这个问题,但我已经阅读了此处显示的内容,但我仍然没有看到问题出在哪里,因为我仍然无法在 Django 2.1.1 应用程序中发布Google App Engine 中的 Python37 环境:
Python 3 Django on App Engine Standard: App Fails to Start
总的来说,我正在尝试使用以下方法发布一个简单的应用引擎应用:
gcloud app deploy
我的应用程序在本地工作,但是当我发布时,它可以顺利通过,但我很烦:
500 服务器错误消息
当我查看 Google 中的日志时,我得到了与许多其他人一样的错误:
ModuleNotFoundError: 没有名为“main”的模块
这是我的相关目录结构
项目门户
项目门户
init.py
settings.py
urls.py
wsgi.py
main.py
app.yaml
requirements.txt
我的 app.yaml 文件
runtime: python37
entrypoint: gunicorn -b :$PORT project_portal.wsgi
env: standard
handlers:
- url: .*
secure: always
redirect_http_response_code: 301
script: project_portal.wsgi.application
我的 project_portal/wsgi.py 文件
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'project_portal.settings')
application = get_wsgi_application()
来自项目根目录中的 main.py
from project_portal.wsgi import application
来自 requirements.txt
django == 2.1.1
【问题讨论】:
【参考方案1】:如果没有定义entrypoint
,它将尝试从名为main.py
的文件开始。创建一个,与app.yaml
在同一级别,其中包含一些简单的逻辑:
from project_portal.wsgi import application
编辑:
既然您定义了entrypoint
,看来这就是问题所在。因此,请确保您的“requirements.txt”中有 gunicorn:
gunicorn==19.9.0
这没有帮助:
尝试改变
entrypoint: gunicorn -b :$PORT project_portal.wsgi
到
entrypoint: gunicorn -b :$PORT project_portal.wsgi:application
【讨论】:
似乎还有更多工作要做。我已经按照你的建议做了,现在我仍然收到 500 错误,但我似乎无法查看日志以了解问题所在。 我假设一些其他的事情已经处理好了,比如有一个名为staticfiles
的目录,以及在你的requirements.txt
中有django?
是的,我只是尝试在我的 app.yaml 中取出静态列表,因为我还没有任何静态文件,我只是想确保我了解如何部署到 GAE。请稍等,我将更新我的 requirements.txt 内容和新的 app.yaml
我仍然遇到问题。如果我保留 main.py,它会运行,但我没有收到找不到“main”的错误通知。如果我像我们讨论的那样删除 main.py 并更改入口点,我会遇到相同的“找不到 main”问题
确保您的requirements.txt
中有gunicorn
:gunicorn==19.9.0以上是关于在 Google App Engine 上运行 Python37 的问题的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Google Cloud App Engine 上运行 PHP 服务
在 Google App Engine 上运行 Python37 的问题
在 Google App Engine 上按计划运行 python 脚本
Python 中 Google App Engine 的 dev_appserver.py 中出现 EOFError 错误