Таким образом, это похоже на действительно общую проблему с этой настройкой, но я не могу найти решения, которые работают на SO. Я установил очень новый сервер Ubuntu 15.04, затем установил nginx, virtualenv (и -wrapper) и uWSGI (через apt-get, так глобально, а не внутри virtualenv).
Мой virtualenv находится в /root/Env/example
. Внутри virtualenv я установил Django, а затем в /srv/www/example/app запускал команду Django startproject
с именем проекта example
, поэтому я смутно отношусь к этой структуре:
-root
-Env
-example
-bin
-lib
-srv
-www
-example
-app
-example
manage.py
-example
wsgi.py
...
Мой файл example.ini для uWSGI выглядит следующим образом:
[uwsgi]
project = example
plugin = python
chdir = /srv/www/example/app/example
home = /root/Env/example
module = example.wsgi:application
master = true
processes = 5
socket = /run/uwsgi/app/example/example.socket
chmod-socket = 664
uid = www-data
gid = www-data
vacuum = true
Но независимо от того, запускаю ли я это через uwsgi --ini /etc/uwsgi/apps-enabled/example.ini
или через демона, я получаю ту же ошибку:
Python version: 2.7.9 (default, Apr 2 2015, 15:37:21) [GCC 4.9.2]
Set PythonHome to /root/Env/example
ImportError: No module named site
Я должен отметить, что проект Django работает через встроенный сервер разработки ./manage.py runserver
, и когда я удаляю home = /root/Env/example
, работа работает (но, очевидно, использует глобальные версии Python и Django, а не версии virtualenv, которые означает, что это бесполезно для правильной настройки virtualenv).
Может ли кто-нибудь увидеть очевидную ошибку пути, которую я не вижу? Насколько я могу судить, home
полностью корректен на основе моей структуры каталогов и всего остального в ini, так почему же он не работает с этим ImportError?