You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask应用部署到AWS ElasticBeanstalk找不到application模块如何解决

问题原因说明

平台要求加载application模块的原因

AWS Elastic Beanstalk的Python运行环境默认遵循WSGI协议启动Web服务,默认配置下会从项目根目录查找application.py模块,再从该模块中导入名为application的可调用对象作为服务入口,因此会触发对应的模块查找逻辑。

应用无法正常运行的核心问题

  1. WSGI入口命名不匹配:你在application.py中定义的Flask实例名称为app,不符合Elastic Beanstalk默认要求的application命名规则,导致服务无法识别入口。
  2. 开发服务代码阻塞进程:代码末尾直接调用app.run(),这是Flask本地开发服务器的启动命令,生产环境执行到该行会启动本地测试服务、阻塞后续进程,导致服务无法正常对外响应请求。
  3. 额外路径干扰风险:如果部署时将本地venv虚拟环境目录一同上传,会干扰服务的模块查找路径,也可能触发模块找不到的报错。

解决方案

  • 调整application.py的入口配置,新增Flask实例别名,同时给app.run()添加执行条件,修改后的对应代码片段如下:
app=Flask(__name__)
# 新增以下行,给Flask实例设置平台要求的别名
application = app

# 其余业务代码保持不变

# 修改末尾的启动代码,仅在本地执行时启动开发服务器
if __name__ == '__main__':
    app.run()
  • 在项目根目录新增requirements.txt文件,写入所有依赖包信息,Elastic Beanstalk会自动安装该文件声明的依赖,示例内容参考:
Flask==2.0.1
Werkzeug==2.0.1
  • 新增.ebignore文件,排除不需要部署的本地文件,避免干扰模块查找路径:
venv/
__pycache__/
*.pyc
*.pyo
*.pyd
  • 所有修改完成后执行eb deploy重新部署即可生效。

内容的提问来源于stack exchange,提问作者Nathan Wolf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 03:06:04