Flask在树莓派上与Virtualenv不兼容
我在我的树莓派上启动一个简单的Python Flask应用时遇到了问题。
我用virtualenvwrapper创建了一个虚拟环境,似乎一切正常。当我运行 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!'
当我在树莓派上运行 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实际上已经安装在我的虚拟环境中了。
1 个回答
4
当你用 sudo
命令运行时,虚拟环境中的 Python 和其他变量就不再被使用了。你可以通过运行 sudo pip freeze
或 sudo pip list
来验证这一点,然后把输出结果和 pip freeze
或 pip list
的结果进行对比。
你有(至少)两个选择:
- 不使用
sudo
来运行 - 指定你想用哪个 Python。虚拟环境其实就是环境的一个包装,所以你可以这样写
sudo /path/to/virtualenv/bin/python simply.py
,这样一切就能正常工作了。
我经常使用第二种方法(不加 sudo
),尤其是在把 supervisord 配置和不同版本的 Python 虚拟环境结合起来的时候,比如在部署 Flask 应用时。这种方法非常有效。