用Gunicorn 运行flask,提示no module named app

flask项目本身用开发服务器已经可以运行,但是当用gunicorn下列命令运行:

gunicorn -w 4 -b 127.0.0.1:8004 app:app

或者

gunicorn -w 4 -b 127.0.0.1:8004 route:app

就会提示 ImportError: No module named 'app'

我的结构目录如下

app
    │  config.py
    │  data.db
    │  forms.py
    │  models.py
    │  mulu.txt
    │  route.py
    │  __init__.py
    │  templates
    |  static
    

其中app定义在__init__.py中

from flask import Flask
app = Flask(__name__)

route.py

from app import app
@app.route('/')
def hello_world():
    return 'hello world'
    
if __name__ == '__main__':
    app.run()

求解?

阅读 18.1k
2 个回答

切到父目录,即app的同级目录,运行gunicorn -w 4 -b 127.0.0.1:8004 app:app即可。

原因:gunicorn的参数为<文件名>:<app实例名>,而在app目录下,是找不到app模块自己的。

gunicorn -w 4 -b 127.0.0.1:8004 wsgi:application

wsgi:application 参数理解分两部分:
wsgi 是引导用的 python 文件名(不含后缀)
application 是 Flask 实例名称。

# wsgi.py

from flask import Flask

def create_app():
  app = Flask(__name__)
  return app

application = create_app()

if __name__ == '__main__':
    application.run()
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题