Flask应用Ubuntu环境Gunicorn启动报错:Failed to find attribute 'app' in 'app'
解决Gunicorn启动Flask应用时"Failed to find attribute 'app' in 'app'"错误
错误原因
Gunicorn加载Flask应用时,需要从指定模块中直接获取全局的Flask app实例。你的app.py中,app对象仅在if __name__ == "__main__"代码块内定义——这个代码块只有直接运行app.py(开发模式)时才会执行,Gunicorn加载模块时不会触发该分支,因此找不到所需的app属性。
解决方案
方案1:修改app.py暴露全局app实例
调整app.py代码,将app实例定义移到全局作用域:
from website import create_app # 将app实例放在全局作用域,供Gunicorn读取 app = create_app() if __name__ == "__main__": app.run(debug=True)
修改完成后,用以下命令启动Gunicorn:
gunicorn app:app
方案2:直接指定Gunicorn调用create_app函数
如果不想修改app.py,可以在启动Gunicorn时直接指定调用create_app()函数生成实例:
gunicorn "app:create_app()"
注意引号必须保留,确保shell将app:create_app()识别为一个完整的参数。
额外检查点
- 确认项目中的
innit.py是__init__.py(双下划线),这是Python包的必要标识,否则from website import create_app会失败。 - 检查
apy.py是否为笔误(比如应为app.py),避免模块命名冲突。
内容的提问来源于stack exchange,提问作者masr33
相关产品推荐
相关产品推荐

