2009-03-13 11 views
0

J'ai eu django courir avec mod_python pendant un certain temps maintenant, mais aujourd'hui, je l'erreur suivanteDjango Mod_python erreur

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 

Ceci est ma configuration d'hôte virtuel

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

Toutes les idées pourquoi cela se passe?

+0

Pouvez-vous importer django.core. handlers.modpython manuellement à partir d'un shell python? J'ai rencontré des problèmes d'importation étranges comme ceci quand une partie de mon module de python ne peut pas importer, mais j'obtiens souvent plus d'erreurs descriptives en essayant d'importer manuellement. –

+0

oui je peux l'importer directement à partir du shell –

+0

Ok, alors qu'en est-il de votre chemin Python dans Apache? Il se peut que cela ait changé de votre chemin système. Pour le tester, vous pouvez essayer d'ajouter explicitement le chemin de Django en utilisant PythonPath. –

Répondre

1

Je ne peux que deviner ce que votre problème est peut-être, mais voici deux contrôles standard:

  1. importation modpython en coquille, à partir de deux différents répertoires de travail
  2. Changement d'utilisateur (si vous avez en plus racine mettre en place) et répétez l'étape 1

Si # 2 ressemble à plus d'ennuis que cela vaut la peine, essayez très, très soigneusement autorisations pour examiner chaque dossier sur le chemin de modpython pour vous assurer que "autre" a un accès en lecture à chaque étape du processus. Si vous avez déplacé django dans votre répertoire personnel (comme je l'ai fait une fois ... je ne sais pas pourquoi, mais j'ai eu la même erreur) ce sera le problème. Vous devez soit le déplacer dans un répertoire où Apache peut lire, soit vous devez ajouter des droits de lecture pour les autres.

0

Dans mon cas, pytonpath et les droits d'accès étaient corrects. Cette erreur a disparu après la recompilation de Python.

Configuration:

Gentoo Django 1.1
Apache:
www-serveurs/apache-2.2.15 USE = "doc ssl threads suexec -debug -ldap (-selinux) -static" APACHE2_MODULES = "d'alias auth_basic authn_alias authn_anon authn_default authn_file authz_default authz_host authz_owner autoindex cache dav dav_fs dav_lock dégonfler dir disk_cache env arrive à expiration en-têtes de filtre ext_filter de file_cache inclure des informations log_config LogIO mem_cache mime réécriture de négociation mime_magic SetEnvIf état speling id_unique userdir USERTRACK vhost_alias -actions -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 -version » APACHE2_MPMS = "travailleur -event -itk -peruser -prefork"
Python 2.6.4

Questions connexes