2010-08-23 14 views
6

Questo è l'errore che ottengo nella mia Apache log degli errori:Non si può ottenere mod_wsgi e Apache con Django al lavoro

[Sun Aug 22 16:52:06 2010] [error] [client 127.0.0.1] ImportError: No module named settings

Questo è il mio file .wsgi, per this blog post:

import sys 

sys.path.insert(0, '/home/wot/django-projects/aedo') 
import settings 
import django.core.management 
django.core.management.setup_environ(settings) 
utility = django.core.management.ManagementUtility() 
command = utility.fetch_command('runserver') 
command.validate() 
import django.conf 
import django.utils 

django.utils.translation.activate(django.conf.settings.LANGUAGE_CODE) 

import django.core.handlers.wsgi 
application = django.core.handlers.wsgi.WSGIHandler() 

Ho doppio e triplo controllato il nome del percorso e questo è davvero il percorso del mio file di progetto. Ho cercato di farlo funzionare per ore, e ho fatto molto googling. Sto chiedendo qui come ultima risorsa. Sono disperato!

EDIT: Mi rendo conto che ci sono domande simili qui in SA, e ho letto attraverso la maggior parte tutti loro, senza alcun risultato

+0

C'è una buona probabilità che Django può trovare il file di impostazioni, ma non ci riesco importalo. Django dà questo errore ogni volta che non può importare un file di impostazioni per qualsiasi motivo. Quindi prova ad aggiungere un 'import settings' nel tuo file' .wsgi'. – Wolph

+0

Sei sicuro al 100% di non aver fatto errori di battitura nel percorso o altro? E in effetti hai un 'settings.py' nella directory'/home/wot/django-projects/aedo'? L'uno o l'altro deve essere falso. – Wolph

+0

Ha già "impostazioni di importazione" nel suo file WSGI. Non si basa sul metodo della variabile d'ambiente DJANGO_SETTINGS_MODULE. –

risposta

2

Qual è l'output di esecuzione:

ls -las /home/wot/django-projects/aedo/ 

è la directory e tutti i file leggibili per utente che Apache viene eseguito come? Se non lo sono, potresti ottenere quell'errore.

guardare anche parlare e guardare diapositive citati al:

http://blog.dscpl.com.au/2010/06/sydney-pycon-modwsgi-talk-slides.html

come si discute ulteriormente problemi di autorizzazioni.

+0

Sì, tutto i file sono leggibili ed eseguibili per tutti gli utenti. E grazie lo farà – skroth

2

Non funziona quando si mette:

import os, sys 
sys.path.append('/usr/local/django') # obs: path to django 
sys.path.append('/home/wot/django-projects/aedo') 
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings' 

import django.core.handlers.wsgi 

application = django.core.handlers.wsgi.WSGIHandler() 

nel file django.wsgi?

+2

Questo non funzionerebbe dato che hai aggiunto la directory del sito a sys.path e non alla directory superiore. –

+0

@Graham Dumpleton - vero, corretto. È perché ho copiato da uno dei miei progetti usando pydev e di solito ho 2 volte la directory (1 per il nome del progetto e 1 per src) come '.../django-projects/aedo/aedo/files.py' – laurent

2

provare a cambiare

os.environ['DJANGO_SETTINGS_MODULE'] = 'aedo.settings' 

a

os.environ['DJANGO_SETTINGS_MODULE'] = 'settings' 

In realtà stavo ottenendo questo errore troppo e l'ho fatto quanto sopra. Ho cambiato anche

ROOT_URLCONF = 'appname.urls' 

a

ROOT_URLCONF = 'urls' 

Spero che la tua settings.py si trova nella stessa directory del file WSGI per questo progetto.

0

Per me ho avuto strani problemi di importazione, Python ha affermato che Django non poteva importare il sito ... Poiché la mia installazione è passata da un puramente "python runserver ..." a un ambiente WSGI, le autorizzazioni erano in realtà un problema.

sorpreso come non ho nemmeno modificare l'autorizzazione sulla confezione django.contrib.site, appena tutti i file del progetto per 755.

Problemi correlati