2009-06-07 88 views
6

試圖讓Django的使用Apache工作,我得到了以下錯誤:mod_python的錯誤:導入錯誤:無法導入設置

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

我的Django應用程序位於在/ home /用戶/ 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指令如下:

<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的環境變量如下卸下模塊名稱:

<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 django文檔掩蓋了「/ home/user/django」(允許從MyDjangoApp導入foo)和其他選項之間的區別。 – 2009-06-07 23:56:46

+0

從設置前刪除模塊名稱解決了我的問題。唷! – PhoebeB 2010-11-23 15:42:45

4

給予這個答案的完整性 - 即使你的情況是不同。

我曾經命名我的django項目test。那麼,Django導入python模塊測試 - 這是一個迴歸測試模塊,並且與我的項目無關。

如果python找到與您的django項目具有相同名稱的另一個模塊,則會發生此錯誤。以不同的方式命名項目,或者將應用程序父目錄的路徑預先添加到sys.path中。

-1

以下示例位於我的Apache配置文件中。我發現很難讓mod_python工作,儘管人們給出了很好的答案。大多數情況下,我收到的評論都表示使用mod_wsgi,而不是mod_python。

評論我看到包括從波士頓Python Meetup所有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>