Flask在Raspberry Pi上与Virtualenv无法合作

时间:2014-04-30 08:50:56

标签: python flask raspberry-pi virtualenv virtualenvwrapper

我在Raspberry Pi上启动一个简单的Python Flask应用程序时遇到了麻烦。

我用virtualenvwrapper创建了一个virtualenv,它似乎正在工作。当我运行pip list时,我得到以下输出。

argparse (1.2.1)
Flask (0.10.1)
gunicorn (18.0)
itsdangerous (0.24)
Jinja2 (2.7.2)
MarkupSafe (0.21)
pip (1.5.4)
requests (2.2.1)
setuptools (2.2)
Werkzeug (0.9.4)
wsgiref (0.1.2)

如你所见

我在simple.py中有以下代码。

import os
from flask import Flask
from flask import request
import requests

app = Flask(__name__)

app.run(host='0.0.0.0', port=int("80"), debug=True)

@app.route('/hello')
def hello():
    return 'Hello world!'

当我在Raspberry Pi上运行sudo python simple.py时,我收到以下错误。

Traceback (most recent call last):
  File "simple.py", line 2, in <module>
    from flask import Flask
ImportError: No module named flask

据我所知,Flask实际安装在我的virtualenv中。

1 个答案:

答案 0 :(得分:4)

当您将其作为sudo运行时,不再使用virtualenvs python和其他变量。您可以通过运行sudo pip freezesudo pip list并分别将输出与pip freezelist进行比较来轻松证明这一点。

你有(至少)两个选择:

  1. 不使用sudo
  2. 运行
  3. 定义您要使用的python。 Virtualenvs只是环境的包装器,因此您可以说sudo /path/to/virtualenv/bin/python simply.py并且一切都应该正常工作。
  4. 在virtualenvs中将supervisord配置与不同的python版本组合时,我经常使用第二个(减去sudo),例如在部署flask应用程序时。像魅力一样。