Колба не работает с 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 соответственно.

У вас есть (как минимум) два варианта:

  1. Бегать без sudo
  2. Определите, какой питон вы хотите использовать. Virtualenvs - просто обертки для окружения, так что вы можете сказать, sudo /path/to/virtualenv/bin/python simply.py и все должно работать просто отлично.

Я часто использую второй (минус sudo) при объединении конфигураций супервизора с различными версиями Python в virtualenvs, например, при развертывании колб-приложений. Работает как шарм.

Другие вопросы по тегам