uwsgi и django - импорт django uwsgi покидает virtualenv и дает сбой

Запуск uwsgi из файла ini приводит к сбою со следующей трассировкой стека:

Traceback (most recent call last):                                                                                                                                                                                                                 
  File "/var/www/vhosts/x/projectX/wsgi.py", line 18, in <module>                                                                                                                                                                                  
    from django.core.wsgi import get_wsgi_application                                                                                                                                                                                              
  File "/var/www/vhosts/x/virtenv/local/lib/python2.7/site-packages/django/core/wsgi.py", line 1, in <module>                                                                                                                                      
    from django.core.handlers.wsgi import WSGIHandler                                                                                                                                                                                              
  File "/var/www/vhosts/x/virtenv/local/lib/python2.7/site-packages/django/core/handlers/wsgi.py", line 4, in <module>                                                                                                                             
    import logging                                                                                                                                                                                                                                 
  File "/usr/lib64/python2.7/logging/__init__.py", line 26, in <module>                                                                                                                                                                            
    import sys, os, time, cStringIO, traceback, warnings, weakref                                                                                                                                                                                  
ImportError: No module named time   

Путь /var/www/vhosts/x/virtenv/ является правильным virtualenv и, как и ожидалось, использует python 2.7. но по какой-то причине при импорте "журнала" он переходит в /usr/lib64/

Еще 2 вещи, на которые следует обратить внимание:

  1. Virtualenv настраивается с помощью команды -p (вручную указав /usr/bin/python2.7 как версию python) и используя --no-site-packages
  2. У нас есть почти идентичный файл uwsgi.ini, работающий с другим приложением django (там проблем нет). Разница только в том, что этот проект X работает под управлением Django 1.6.1, а другой проект работает под управлением Django 1.5.

Самое странное, что если я пытаюсь выполнить код из файла wsgi.py вручную, то он прекрасно работает. (Я получаю virtualenv, запускаю командную строку python и копирую туда команды wsgi.py)

Вот файл uwsgi.ini:

[uwsgi]
# variables
projectname = projectX
projectdomain = x.mydomain.com
base = /var/www/vhosts/x

# config
socket = 127.0.0.1:8989
chdir = %(base)
wsgi-file = %(base)/%(projectname)/wsgi.py
master = true
pidfile = /tmp/%(projectname)-master.pid
vacuum = true

max-requests = 5000
processes = 10
#harakiri = 20
uid = 109
gid = 113

callable = projectX

env = DJANGO_SETTINGS_MODULE=settings
home = %(base)/virtenv
touch-reload = %(base)
py-autoreload = 3

#daemonize = /var/log/x/uwsgi.log
virtualenv = %(base)/virtenv
pythonpath = %(base)/virtenv/lib/python2.7
pythonpath = %(base)
pythonpath = %(base)/%(projectname)

Файл wsgi.py:

import os

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "projectX.settings")

from django.core.wsgi import get_wsgi_application    # <-- this is line 18
application = get_wsgi_application()

person DerShodan    schedule 07.03.2014    source источник
comment
РЕШЕНО: мне пришлось изменить env = DJANGO_SETTINGS_MODULE=projectX.settings   -  person DerShodan    schedule 07.03.2014


Ответы (1)


Решено путем изменения

env = DJANGO_SETTINGS_MODULE=settings

to

env = DJANGO_SETTINGS_MODULE=projectX.settings

Тем не менее, если кто-нибудь знает, почему это работает на django 1.5, а не на 1.6.1, мне было бы очень интересно.

person DerShodan    schedule 07.03.2014