uwsgi + Flask + virtualenv ImportError: нет модуля с именем site

(Другие сообщения на SO аналогичны, но ни одна из них не имеет конкретной комбинации uwsgi + Flask + virtualenv) ( этот ближайший )

Я установил uwsgi через apt-get. Я также попробовал pip install wsgi. Оба дали мне ту же проблему.

Команда тестирования:

sudo uwsgi -s /tmp/uwsgi.sock -w myapp:app -H myvirtualenv 

Результат:

 Python version: 2.7.4 (default, Apr 19, 2013, 18:35:44) [GCC 4.7.3] Set PythonHome to myvirtualenv ImportError: No module named site 

В противном случае я могу запустить приложение в виртуальном env.

5 Solutions collect form web for “uwsgi + Flask + virtualenv ImportError: нет модуля с именем site”

Сначала см. Ответ от @JRajan.

Если вы уверены, что хотите просто подавить ошибку и не решить основную проблему, наведите указатель мыши ниже.

Добавьте --no-site к вашей команде или no-site=true в ваш файл uwsgi.ini.

Неправильный путь к вашей виртуальной среде. Это ошибка для этой ошибки.

Я использую virtualenvwrapper, и мои виртуальные среды установлены в ~ / .virtualenvs. Поэтому в моем случае вызов uwsgi будет выглядеть примерно так:

 sudo uwsgi -s /tmp/uwsgi.sock -w myapp:app -H ~/.virtualenvs/myapp 

Надеюсь, это поможет в следующий раз, когда кто-то найдет этот.

Спасибо Коди за указание на это в комментариях.

В моем случае проблема была в версии python, которую пыталась использовать uWSGI.

Мой проект был написан на python 3.4, но я не указывал это в конфигурации uWSGI. Поэтому uWSGI попытался использовать python 2 и попытался импортировать модули из папки lib / python2.7 внутри virtualenv.

Поэтому я получил ошибку «Нет модуля с именем сайта», потому что все модули, включая модуль сайта, внутри lib / python3.4, а не lib / python2.7.

Чтобы решить эту проблему, мне пришлось сделать две вещи:

  • Установите плагин python3 для uWSGI, используя:
    apt-get install uwsgi-plugin-python3

  • Используйте его в конфигурационном файле .ini, используя:
    plugins = python34

Надеюсь, это поможет кому-то с той же проблемой в будущем.

В соответствии с запросом здесь следует мой .ini-файл:

 [uwsgi] base = /your/app/path pythonpath = %(base) module = your_module_name callable = app #Here you put the name of the variable which holds your app inside your module home = /your/virtualenv/path plugins = python34 master = true processes = 2 uid = www-data gid = www-data socket = /path/to/socket chmod-socket = 660 die-on-term = true logto = /var/log/uwsgi/%n.log 

Раньше у меня была аналогичная проблема. Моя проблема в том, что у меня есть python2.x и python3.x в моей системе ubuntu, и я хочу, чтобы мой проект запускался в виртуальном env, в котором установлена ​​среда python3. Как я решил эту проблему:

apt-get install python3-pip

pip3 установить uWSGI

Это все.

ЭТО МОЖЕТ БЫТЬ ПЛОХО ДЛЯ БЕЗОПАСНОСТИ ДЛЯ НЕСКОЛЬКИХ ПРИЧИН. ЭТО РАБОТАЕТ ДЛЯ ТЕСТИРОВАНИЯ. НО ОБЗОР БЕЗОПАСНОСТИ ПЕРЕД ИСПОЛЬЗОВАНИЕМ ЭТОГО ТОЧНОГО РЕШЕНИЯ В ПРОИЗВОДСТВЕ

Другая причина, по которой может возникнуть эта ошибка, связана с разрешениями. Если вы используете файл .ini, как описано в официальном руководстве для uWSGI для django , возможно, вы создали файл ini с пользователем и группой, что делает файл недоступным для пользователя, который запускает этот процесс.

Проверьте владельца и разрешения для файла и его путь к каталогу. Используйте chown и chmod для установки необходимых разрешений.

sudo chown -R www-data:www-data /srv

sudo chmod 0775 -R /srv

В моем случае я использовал бродячую шкатулку для тестирования, а пользователь по умолчанию «бродячий», а nginx использует www-данные для пользователя и группы. Я установил владельца всех файлов в проекте пользователю и группе www-data и добавил бродячего пользователя в группу www-data.

sudo gpasswd -a vagrant www-data

Я не уверен, что это хорошая практика безопасности, поэтому я буду работать с моим системным администратором, когда придет время поставить его в производство. Но для моей тестовой среды это работает. В любом случае, разрешения будут рассмотрены по многим из этих вопросов.

  • Python: настройка uWSGI для NGINX + FLASK
  • Легкая регистрация / отладка приложений с помощью nginx, uwsgi, flask?
  • uWSGI и изящно убивает многопоточное приложение Flask
  • uWSGI: никакой плагин запроса не загружен, вы не сможете управлять запросами
  • uwsgi дешевле убивает рабочих, обрабатывающих запросы
  • развертывание флеш-приложения с uwsgi и диспетчер флагов-скриптов
  • Неверная транзакция, сохраняющаяся во всех запросах
  • Nginx и uWSGI: соединение отклонено и ошибка 502 Bad Gateway
  • Служба uwsgi не запускается
  • Используйте одно приложение для нескольких экземпляров uwsgi
  • торнадо против wsgi (с пушкой)
  •  
    Interesting Posts for Van-Lav

    Может ли флеш-каркас отправлять данные в реальном времени с сервера на клиентский браузер?

    OSX: использование bash для поиска python отличается от использования / usr / bin / env python

    Поиск отсутствующих данных в Timesstamp

    Проблемы с вызовом Python из C ++

    Может ли Python xml ElementTree проанализировать очень большой XML-файл?

    Производительность: асинхронный обработчик запросов с задачами блокировки, выполняемыми пулом работников

    ImportError: Ошибка загрузки DLL: при импорте statsmodels

    Раздражающее пробел в гистограмме (matplotlib, Python)

    Как передать свой идентификатор и пароль на сайт в Python с помощью Google App Engine?

    Python Как проверить, достиг ли последний элемент в цепочке инструментов итератора?

    Открытое окно Python OpenCV поверх других приложений

    функция возвращает наименьшую разницу между элементами из двух списков – python

    Отправить файл через Django Class Based Views

    Вызов функции модуля из строки с именем функции

    Запуск приложения pyqt дважды из одного приглашения в spyder

    Python - лучший язык программирования в мире.