运行uWSGI时没有名为flask的模块

2024-04-26 07:28:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个非常简单的烧瓶应用程序(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安装烧瓶)。如果我运行ipython并导入烧瓶,它也可以在那里工作。有什么想法吗?谢谢!


Tags: nameinfrompyimportapp应用程序flask
3条回答

我也遇到过同样的问题,因为有版本冲突

然后我不使用pip来安装uwsgi,而是通过我的包管理器来完成 在ubuntu机器上

sudo apt-get install uwsgi

同时检查并运行myflaskapp.py而不使用uwsgi,这是通过在代码中使用app.run()实现的

*注:由werkzeug服务器提供。

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

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

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

我遇到了类似的问题,并发现如果我们在虚拟环境中安装了一个模块(本例中是Flask),那么除了使用uWSGI运行Flask应用程序所需的基本指令之外,我们可能还需要添加--virtualenv path

因此,根据uWSGI文件,指令如下:

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

相关问题 更多 >