2009-06-07 16 views
6

Django अपाचे के साथ काम करने का प्रयास कर रहे आयात नहीं कर सके, और मैं निम्नलिखित त्रुटि हो रही है:mod_python त्रुटि: ImportError: सेटिंग्स

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

मेरे Django अनुप्रयोग में/घर/उपयोगकर्ता/Django स्थित है/MyDjangoApp/

मेरे httpd.conf स्थान खंड की तरह दिखता है:

<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> 

कृपया मुझे बताओ कैसे Django काम करने के लिए स्थान अनुभाग को दूर करने के?

उत्तर

11

मुझे लगता है कि mod_python MKSearch मॉड्यूल में सेटिंग्स की तलाश में है जो/home/user/django/MyDjangoApp निर्देशिका के पक्ष में मौजूद नहीं है। नीचे के रूप में PYTHONPATH निर्देश के लिए माता-पिता dir जोड़ने का प्रयास करें:

<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> 

या नीचे के रूप में DJANGO_SETTINGS_MODULE env var से मॉड्यूल का नाम हटाने के लिए:

<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 डीजेंगो दस्तावेज़ "/ home/user/django" (जो "MyDjangoApp आयात foo से") और विकल्पों के बीच अंतर पर चमकते हैं। –

+0

सेटिंग्स के सामने से मॉड्यूल नाम को हटाने से मेरी समस्या हल हो गई। ओह! – PhoebeB

4

संपूर्णता के लिए इस सवाल का जवाब देते हुए - भले ही अपने मामले था विभिन्न।

मैंने एक बार अपना django प्रोजेक्ट test नाम दिया है। खैर, django पाइथन मॉड्यूल परीक्षण आयात कर रहा था - जो रिग्रेशन परीक्षण के लिए एक मॉड्यूल है और मेरे प्रोजेक्ट के साथ कुछ लेना देना नहीं है।

यह त्रुटि तब होगी जब पाइथन को आपके django प्रोजेक्ट के समान नाम के साथ एक और मॉड्यूल मिल जाए। अपनी परियोजना को एक अलग तरीके से नाम दें, या sys.path पर अपने आवेदन की मूल निर्देशिका के पथ को पूर्ववत करें।

+2

वास्तव में मेरे साथ क्या हो रहा था। धन्यवाद! – nlaq

+0

यह मेरी समस्या भी थी। मेरे पास परीक्षण नाम का एक स्टेजिंग क्षेत्र था और नाम अंतर्निहित पैकेज से विवादित था। ऐसा लगता है कि Django शायद इसके लिए एक विशेष त्रुटि संदेश देना चाहिए। –

-1

मेरे अपाचे कॉन्फ़िगरेशन फ़ाइल में स्थित निम्न उदाहरण, काम करता है। लोगों से अच्छे उत्तरों के बावजूद मुझे mod_python को काम करने में बहुत मुश्किल लग गई। अधिकांश भाग के लिए, मुझे मिली टिप्पणियों में mod_pysgon के बजाय mod_wsgi का उपयोग करने के लिए कहा गया।

टिप्पणियां मैंने बोस्टन पायथन मीटअप समेत देखा है सभी concur mod_wsgi का उपयोग करना आसान है। Red Hat EL 5 WS पर मेरे मामले में, mod_python से बदलना व्यावहारिक नहीं है।

<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> 
संबंधित मुद्दे