2011-11-23 46 views
7

Mam projekt Django z jedną aplikacją o nazwie subscribe. W root urls.py używam include z subscribe 's urls.py.Błąd importu Django uwsgi

kładę do INSTALLED_APPSsubscribe aw subscribe „s urls.py używam subscribe.views.<name> dla nazwać moje poglądy. Kiedy serwer działa jako python manage.py runserver lokalnie wszystko działa poprawnie. Ale gdy prowadzony na serwer nginx + uwsgi z virtualenv, mam ImportError: No module named subscribe. Po zmianie subscribe na project.subscribe w INSTALLED_APPS i urls.py zmiana na project.subscribe.views.<name> wszystko działa dobrze.

uwsgi config:

[uwsgi] 
socket = 127.0.0.1:9003 
workers = 2 
master = true 
virtualenv = /home/user/python 
chdir = /home/user 
env = DJANGO_SETTINGS_MODULE=project.settings 
module = django.core.handlers.wsgi:WSGIHandler() 
daemonize = /home/user/uwsgi.log 

Dlaczego powinienem użyć ścieżki bezwzględnej import i jak mogę ją zmienić względną tyłu na nginx + uwsgi z virtualenv?

+0

dodać 'project' do ścieżki Pythona albo za pośrednictwem skryptu startowego virtualenv lub inaczej –

+0

mój skrypt startowy już m.in. it: sys.path.insert (0, '/ home/user/project') – ZedXter

+0

Foldery zagrożeń Django z __init__.py jako pakiety i yo u skonfigurować '/ home/user/project' jako głównego katalogu na swoim' skryptu wsgi', więc powinien działać tak samo jak 'python manage.py runserver' działa. –

Odpowiedz

7

Twoja konfiguracja uwsgi powinna zawierać dyrektywę pythonpath=/path/where/lives/settings.py/, więc interpreter python będzie wiedział, gdzie znaleźć swoje aplikacje.

znajdziesz uwsgi opcji konfiguracyjnych:

+0

Dziękuję za odpowiedź i bardzo przydatne linki! – ZedXter

+0

Af Po spędzeniu niezliczonych godzin próbując to zrozumieć, pomocne było sformułowanie Twojej odpowiedzi. Wielkie dzięki :) – Pztar

Powiązane problemy