Колба не работает с Virtualenv на Raspberry Pi
У меня проблемы с запуском простого приложения Python Flask на Raspberry Pi.
Я создал virtualenv с помощью 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
на Raspberry Pi я получаю следующую ошибку.
Traceback (most recent call last):
File "simple.py", line 2, in <module>
from flask import Flask
ImportError: No module named flask
Насколько я вижу, Flask фактически установлен в моем virtualenv.
1 ответ
Когда вы запускаете его как sudo
, python virtualenvs и другие переменные больше не используются. Вы можете легко доказать это, запустив sudo pip freeze
или же sudo pip list
и сравнивая результат с pip freeze
или же list
соответственно.
У вас есть (как минимум) два варианта:
- Бегать без
sudo
- Определите, какой питон вы хотите использовать. Virtualenvs - просто обертки для окружения, так что вы можете сказать,
sudo /path/to/virtualenv/bin/python simply.py
и все должно работать просто отлично.
Я часто использую второй (минус sudo
) при объединении конфигураций супервизора с различными версиями Python в virtualenvs, например, при развертывании колб-приложений. Работает как шарм.