2009-03-13 5 views
0

Ich habe django mit mod_python eine Weile jetzt laufen musste aber heute bekomme ich folgende FehlerDjango Mod_python ERROR

MOD_PYTHON ERROR 

ProcessId:  4551 
Interpreter: 'thatch' 

ServerName:  'thatch' 
DocumentRoot: '/var/www/thatch' 

URI:   '/' 
Location:  '/' 
Directory:  None 
Filename:  '/var/www/thatch/' 
PathInfo:  '' 

Phase:   'PythonHandler' 
Handler:  'django.core.handlers.modpython' 

Traceback (most recent call last): 

    File "/usr/lib/python2.5/site-packages/mod_python/importer.py", line 1537, in HandlerDispatch 
    default=default_handler, arg=req, silent=hlist.silent) 

    File "/usr/lib/python2.5/site-packages/mod_python/importer.py", line 1202, in _process_target 
    module = import_module(module_name, path=path) 

    File "/usr/lib/python2.5/site-packages/mod_python/importer.py", line 304, in import_module 
    return __import__(module_name, {}, {}, ['*']) 

ImportError: No module named django.core.handlers.modpython 

Dies ist meine virtuelle Hostkonfiguration

<VirtualHost *:80> 
    ServerName thatch 

    DocumentRoot /var/www/thatch 

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

    <Location "/media"> 
    SetHandler None 
    </Location> 

    <LocationMatch "\.(jpg|gif|png|css|js)$"> 
    SetHandler None 
    </LocationMatch> 

</VirtualHost> 

Irgendwelche Ideen, warum dies geschieht?

+0

Können Sie django.core importieren. handlers.modpython manuell von einer Python-Shell? Ich bin auf seltsame Importprobleme wie diese gestoßen, wenn ein Teil meines Python-Moduls nicht importiert werden kann, aber ich bekomme oft beschreibende Fehler, wenn ich versuche, manuell zu importieren. –

+0

Ja, ich kann es direkt aus der Shell importieren –

+0

Ok, was ist dann mit Ihrem Python-Pfad in Apache? Es könnte sein, dass es sich von Ihrem systemweiten Pfad geändert hat. Um es zu testen, könnten Sie versuchen, den Pfad für Django explizit mit PythonPath hinzuzufügen. –

Antwort

1

Ich kann nur raten, was das Problem sein könnte, aber hier sind zwei Standardprüfungen:

  1. Import Mod_python in der Schale, von ein paar unterschiedliche Arbeitsverzeichnisse
  2. ändern Benutzer (wenn Sie welche haben neben root set up) und wiederholen sie Schritt 1

Wenn # 2 wie mehr Mühe aussieht, als es wert ist, dann versuchen sehr, sehr sorgfältig Prüfung von Berechtigungen für jeden Ordner auf dem Weg, um sicherzustellen, zu Mod_python dass "Andere" hat in jeder Phase des Lesezugriffs Lesezugriff. Wenn Sie Django in Ihr Home-Verzeichnis verschoben haben (wie ich es einmal getan habe ... nicht sicher warum, aber den gleichen Fehler bekommen), wird das das Problem sein. Sie müssen es entweder in ein Verzeichnis zurückversetzen, in dem Apache lesen kann, oder Sie müssen Leseberechtigung für andere hinzufügen.

0

In meinem Fall war pytonpath und Zugriffsrechte in Ordnung. Dieser Fehler ist nach der Neukompilierung von Python verschwunden.

Konfiguration:
Esel
Django 1.1
Apache:
WWW-Servern/Apache-2.2.15 USE = "doc ssl suexec Gewinde -Debug -LDAP (-selinux) -static" APACHE2_MODULES = "alias AUTH_BASIC authn_alias authn_anon authn_default authn_file authz_default authz_host authz_owner Autoindex Cache dav dav_fs dav_lock abzulassen dir disk_cache env abläuft ext_filter file_cache Filter-Header enthalten Informationen log_config LogIO mem_cache mime mime_magic Verhandlung Rewrite SetEnvIf speling Status unique_id userdir Usertrack vhost_alias -Aktionen -asis -auth_digest -authn_dbd -authn_dbm -authz_dbm -authz_groupfile -authz_user -cern_meta -charset_lite -dbd -dumpio -ident -ima gemap -log_forensic -proxy -proxy_ajp -proxy_balancer -proxy_connect -proxy_ftp -proxy_http -substitute -Ausführung“APACHE2_MPMS = "Arbeiter -event -itk -peruser -prefork"
Python 2.6.4