2009-06-07 10 views
6
Django Apache ile çalışmak için çalışıyorum

alınamadı ve aşağıdaki hatayı alıyorum:Mod_python hatası: ImportError: Ayarları

ImportError: Could not import settings 'MyDjangoApp.settings' (Is it on sys.path? Does it have syntax errors?): No module named MyDjangoApp.settings

Benim Django uygulaması/home/kullanıcı/django bulunan /MyDjangoApp/

Benim httpd.conf Yer bölüm benziyor:

<Location "/MyDjangoApp/"> 
    SetHandler python-program 
    PythonHandler django.core.handlers.modpython 
    SetEnv DJANGO_SETTINGS_MODULE MKSearch.settings 
    PythonOption django.root /MyDjangoApp 
    PythonPath "['/home/user/django/MyDjangoApp/','/var/www'] + sys.path" 
    PythonDebug On 
</Location> 

nasıl Django çalışması için konum bölümü düzeltmek için söyle?

cevap

11

Bence mod_python/home/user/django/MyDjangoApp dizininde bulunmayan MKSearch modülündeki ayarları arıyor.

<Location "/MyDjangoApp/"> 
    SetHandler python-program 
    PythonHandler django.core.handlers.modpython 
    SetEnv DJANGO_SETTINGS_MODULE MKSearch.settings 
    PythonOption django.root /MyDjangoApp 
    PythonPath "['/home/user/django/', '/home/user/django/MyDjangoApp,'/var/www'] + sys.path" 
    PythonDebug On 
</Location> 

Veya aşağıdaki gibi DJANGO_SETTINGS_MODULE env var itibaren modül adı kaldırın:: aşağıdaki gibi PYTHONPATH direktifi ile ebeveyn dir eklemeyi deneyin

<Location "/MyDjangoApp/"> 
    SetHandler python-program 
    PythonHandler django.core.handlers.modpython 
    SetEnv DJANGO_SETTINGS_MODULE settings 
    PythonOption django.root /MyDjangoApp 
    PythonPath "['/home/user/django/MyDjangoApp,'/var/www'] + sys.path" 
    PythonDebug On 
</Location> 
+0

+1 doküman ve alternatifleri ("MyDjangoApp ithalat foo" izin verir) "/ home/kullanıcı/django" arasındaki fark geçiştirmeye Django. –

+0

Modül adını ayarların önünden kaldırmak problemimi çözdü. Uf! – PhoebeB

4

bütünlük açısından bu cevabı verilmesi - davanız olmasına rağmen farklı.

Bir kez django projemi test adlı bir adadım. Django, regresyon testi için bir modül olan ve projemle ilgisi olmayan bir python modül testi alıyordu.

Python, django projenizle aynı ada sahip başka bir modül bulduğunda bu hata ortaya çıkar. Projenizi farklı bir şekilde adlandırın veya uygulamanızın ana dizininin yolunu sys.path'e ekleyin.

+2

Tam olarak ne oldu bana. Teşekkürler! – nlaq

+0

Bu benim de problemimdi. Test adında bir deneme alanı ve yerleşik paketle çakışan isim vardı. Bu, Django'nun muhtemelen bunun için özel bir hata mesajı vermesi gerektiği kadar yaygın görünüyor. –

-1

Aşağıdaki örnek, Apache yapılandırma dosyasımda bulunur, çalışır. İnsanlardan gelen iyi cevaplara rağmen mod_python'un çalışmasını çok zor buldum. Çoğunlukla, aldığım tüm yorumları mod_wsgi yerine mod_python yerine söylemişti.

Yorumlar Ben Boston Python Meetup da dahil olmak üzere tüm modüler mod_wsgi kullanımı daha kolay gördük. Red Hat EL 5 WS'deki benim durumumda, mod_python'dan değiştirmek pratik değildir.

<Location /> 
     SetHandler python-program 
     PythonHandler django.core.handlers.modpython 
     SetEnv DJANGO_SETTINGS_MODULE settings 
     PythonOption django.root /home/amr/django/amr 
     PythonPath "['/home/amr/django', '/home/amr/django/amr', '/usr/local/lib 
/site-packages/django'] + sys.path" 
     PythonDebug On 
</Location>