YAML Entrypoint配置疑问:gunicorn中main模块应替换为哪项?
Gunicorn Entrypoint 中「main」位置的填写说明及错误排查
Gunicorn 的 entrypoint 格式是 模块名:WSGI应用实例,这里的「main」需要替换为你的Python文件的模块名(不带.py后缀),前提是该文件中导出了名为app的WSGI应用实例(比如Flask的app = Flask(__name__)、Django的application,如果是Django要对应改成savapp:application)。
针对你遇到的ModuleNotFoundError: No module named 'savapp'错误,按以下步骤排查:
确认文件命名与路径
确保你的应用根文件确实是savapp.py,且该文件位于GAE部署的根目录下(即和app.yaml同一层级)。Linux环境大小写敏感,注意文件名不要有大小写拼写错误(比如不要写成SavApp.py)。检查Python模块搜索路径
如果savapp.py在子目录中,需要将该目录设为Python可识别的模块:- 在子目录下创建空的
__init__.py文件(Python3.3+可省略,但建议添加以兼容更多环境) - entrypoint 改为
子目录名.savapp:app,比如文件在src/savapp.py,则写src.savapp:app
- 在子目录下创建空的
验证文件内的应用实例
打开savapp.py,确认里面存在名为app的WSGI实例:# Flask示例 from flask import Flask app = Flask(__name__) # Django示例(需修改entrypoint为savapp:application) from django.core.wsgi import get_wsgi_application application = get_wsgi_application()如果实例名不是
app,要对应修改entrypoint,比如实例叫my_app,则写savapp:my_app本地先测试再部署
在本地项目根目录运行以下命令,确认Gunicorn能正常启动:gunicorn -b :8080 savapp:app如果本地也报错,先解决本地问题再执行
gcloud app deploy检查app.yaml配置
确保app.yaml中的runtime配置正确(比如runtime: python311),entrypoint格式无误:runtime: python311 entrypoint: gunicorn -b :$PORT savapp:app
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

