Я получаю сообщение об ошибке: ImportError: No module named site
согласно моему журналу uWSGI.
test_proj.ini:
[uwsgi]
chdir = /home/%n/app
module = %n.wsgi
home = /home/%n/app/venv
master = true
processes = 10
chmod-socket = 664
socket = /home/%n/uwsgi/socket
daemonize = /home/%n/uwsgi/log
pidfile = /home/%n/uwsgi/pid
nginx:
server {
listen 8888;
server_name 192.168.88.187;
# Set up django static file serving
location /static {
alias /home/test_proj/app/static/;
}
# pass all non-static request to uWSGI
location / {
uwsgi_pass unix:///home/test_proj/uwsgi/socket;
include uwsgi_params;
}
}
замораживание пипса:
Django==1.7.1
django-braces==1.4.0
django-cors-headers==0.13
django-dynamic-settings==1.1.0
django-oauth-toolkit==0.7.2
django-uuidfield==0.5.0
djangorestframework==3.0.0
oauthlib==0.7.2
psycopg2==2.5.4
six==1.8.0
У меня также установлен глобально uWSGI. Я что-то упускаю в ini
файл или это из-за моих настроек nginx? Я пробовал разные комбинации ini
файл.
Я также пробовал добавить no-site = true
внутри ini
но я узнал, что его нельзя добавлять в ini
файл, даже если он устраняет ошибку и вызывает другую ошибку.
Я тоже следил за этим руководство но все равно не повезло.
Спасибо.
Причина, по которой он не работал, в том, что я установил uwsgi
используя обычный pip
команда. Поскольку у меня на машине установлены Python 2 и 3, мне нужно установить uwsgi
с помощью pip3
.
Команда, которую я выполнил: pip3 install uwsgi
Если вы используете venv, запустите uwsgi, используя полный путь uwsgi, где он находится внутри venv, например /usr/venv/bin/uwsgi
. По умолчанию uwsgi может находиться где-то еще.
Пытаться which uwsgi
чтобы найти его.
Причина, по которой вы получаете эту ошибку, заключается в том, что модули (сайт, операционная система и т. Д.) Не могут быть найдены в виртуальной среде, указанной в директиве home. Использование правильной версии pip, возможно, сработало для вас, но только потому, что оно устраняет вашу проблему с virtualenv.