为什么 Gunicorn 仅在 flask 安装在 virtualenv 之外时才工作?

Why is Gunicorn only working when flask is installed outside of virtualenv?

我正在 ubuntu 14.04 VPS 上部署基于 Flask 的 Web 应用程序。我基本上是按照我在 Real Python here 找到的说明进行操作。以前,当我启动 gunicorn 时,我收到消息:"ImportError: No module named flask";尽管已确保 flask 安装在 virtualenv 中并已将其删除并重新安装了几次,以及停用和重新激活 virtualenv 以及删除然后重新安装 virtualenv。

在我无能为力的时候,我想我会在 virtualenv 停用和中提琴时安装烧瓶! gunicorn 运行没有问题。然后我想我会在 virtualenv 之外启动 gunicorn,我发现即使 virtualenv 关闭它也能正常工作。

有谁知道为什么会这样?

我是运行的gunicorn命令是:

gunicorn app:app -b localhost:8000

我是 运行 这个项目文件夹中的命令,该文件夹包含文件 app.py,其中包含以下代码:

from flask import Flask, jsonify
app = Flask(__name__)

@app.route('/')
def index():
   return 'Flask is running!'


@app.route('/data')
def names():
   data = {"names": ["John", "Jacob", "Julie", "Jennifer"]}
   return jsonify(data)



if __name__ == '__main__':
   app.run() code here

确保您 运行 的 gunicorn 是安装在您的 virtualenv 中的那个。试试 which gunicorn 我怀疑它会指向你在全局 python 安装中安装的 gunicorn 而不是你的 virtualenv 中的那个。