Мой django, uwsgi проект не запускается из-за виртуального окружения - PullRequest
0 голосов
/ 04 июня 2019

Я буду обслуживать свой проект django с помощью uwsgi на Ubuntu Server, но он не запускается.

Я использую python 3.6, но uwsgi показывает мне, что это 2.7

Я изменил Python по умолчаниюв python3.6, но uwsgi по-прежнему не работает.

Это моя команда:

uwsgi --http :8001 --home /home/ubuntu/repository/env --chdir 
/home/ubuntu/repository/project -w project.wsgi

Это сообщение об ошибке:

*** Starting uWSGI 2.0.18 (64bit) on [Tue Jun  4 21:03:58 2019] ***
compiled with version: 5.4.0 20160609 on 04 June 2019 11:39:14
os: Linux-4.4.0-1079-aws #89-Ubuntu SMP Tue Mar 26 15:25:52 UTC 2019
nodename: ip-172-31-18-239
machine: x86_64
clock source: unix
detected number of CPU cores: 2
current working directory: /home/ubuntu/repository/charteredbus
*** running under screen session 1636.sbus ***
detected binary path: /usr/local/bin/uwsgi
!!! no internal routing support, rebuild with pcre support !!!
chdir() to /home/ubuntu/repository/charteredbus
*** WARNING: you are running uWSGI without its master process manager ***
your processes number limit is 15738
your memory page size is 4096 bytes
detected max file descriptor number: 1024
lock engine: pthread robust mutexes
thunder lock: disabled (you can enable it with --thunder-lock)
uWSGI http bound on :8001 fd 4
spawned uWSGI http 1 (pid: 8402)
uwsgi socket 0 bound to TCP address 127.0.0.1:39614 (port auto-assigned) fd 3
Python version: 2.7.12 (default, Nov 12 2018, 14:36:49)  [GCC 5.4.0 20160609]
Set PythonHome to /home/ubuntu/repository/env
ImportError: No module named site

Ответы [ 2 ]

0 голосов
/ 05 июня 2019

К сожалению, uWSGI должен быть скомпилирован с версией Python, соответствующей вашему virtualenv.Это означает: если uWSGI был скомпилирован с python 2.7, вы не можете использовать python 3.6 в вашем virtualenv (и в вашем приложении Django).

К счастью, есть несколько способов исправить это:

  • Установка uWSGI внутри вашего virtualenv и использование этого двоичного файла uWSGI для запуска Django.
  • Использование Python в качестве плагина для uWSGI.

Первый довольно прост.Все, что вам нужно сделать, это изменить путь к двоичному файлу uWSGI в вашем скрипте запуска, чтобы он указывал на uWSGI, установленный в вашем virtualenv.(Если вы запускаете uWSGI с использованием systemd, я рекомендую использовать системные юниты systemd. Только не забудьте запустить loginctl enable-linger)

Второй не такой сложный.Сначала вы должны установить uWSGI без плагина Python, а затем установить отдельные плагины для всех необходимых вам версий Python.Подробнее об этом вы можете узнать здесь .Возможно, в вашем системном пакете есть готовые плагины, если вы используете из него uWSGI.

0 голосов
/ 04 июня 2019

В журнале сказано, что нет модуля с именем site

ImportError: нет модуля с именем site

Я предполагаю, что сайт является приложением django. Вы зарегистрировали это в своем INSTALLED_APPS (settings.py)

В противном случае вам может понадобиться зарегистрировать ваше приложение. (apps.py в приложении сайта)

Пожалуйста, дайте мне знать, если я вам помог.

Jasper

...