【问题标题】:No module named flask while running uWSGI运行 uWSGI 时没有名为 flask 的模块
【发布时间】:2015-01-22 20:08:54
【问题描述】:

我有一个非常简单的烧瓶应用程序(myflaskapp.py):

from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
    return "<span style='color:red'>I am app 1</span>"

如果我跑:

uwsgi --http-socket :3031 --plugin python --wsgi-file myflaskapp.py --callable app

我得到以下输出:

Traceback (most recent call last):
  File "myflaskapp.py", line 1, in <module>
    from flask import Flask
ImportError: No module named flask
unable to load app 0 (mountpoint='') (callable not found or import error)
*** no app loaded. going in full dynamic mode ***

我不明白为什么。我已经安装了烧瓶(pip install flask)。如果我运行 ipython 并导入烧瓶,它也可以在那里工作。有任何想法吗?谢谢!

【问题讨论】:

  • 确保 uwsgi 使用的 python 版本与您用于烧瓶(或构建测试 virtualenv)的版本相同。 python版本打印在uWSGI启动日志上
  • 是的,版本略有不同:uWSGI 为 2.7.5,virtualenv 为 2.7.3。

标签: python import flask uwsgi


【解决方案1】:

最后对我有用的是将 -H /path/to/virtualenv 添加到 uWSGI 命令:

uwsgi --http-socket :3031 --plugin python --wsgi-file myflaskapp.py --callable app -H /path/to/virtualenv

我在 virtualenv 和 uWSGI 中也有不同的 Python 版本。我仍在调查这是否会导致任何问题。

【讨论】:

  • 我 100% 确定这是因为不同的 python 版本。在我将 python3 用于 venv 和 uwsgi 后,我遇到了同样的问题并得到了解决
【解决方案2】:

我曾经遇到过同样的问题,因为有一些版本冲突

然后我没有使用 pip 安装 uwsgi,而是由我的包管理器完成的 在 ubuntu 机器上,

sudo apt-get install uwsgi

还可以通过在代码中使用 app.run() 来检查并运行不带 uwsgi 的 myflaskapp.py

*注意:这将由 werkzeug 服务器提供。

【讨论】:

    【解决方案3】:

    我遇到了类似的问题,并发现如果我们在虚拟环境中安装了一个模块(在这种情况下为 Flask),除了运行 Flask 应用程序所需的基本指令之外,我们可能还需要添加 --virtualenv 路径uWSGI

    所以根据 uWSGI 文档的指令是:

    uwsgi --http-socket :3031 --plugin python --wsgi-file myflaskapp.py --callable app --virtualenv /path_to_virtualenv
    

    【讨论】:

      【解决方案4】:

      您可以在 .ini 文件中添加一行:

      home=/your/virtual/env/path
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-09-01
        • 2015-04-03
        • 2014-09-18
        • 1970-01-01
        • 2017-06-22
        • 1970-01-01
        • 2018-09-09
        相关资源
        最近更新 更多