2009-01-22 9 views
0

J'ai installé Apache pour servir les demandes de http://www.mysite.com de ce répertoire:Pourquoi mon application Django ne fonctionne pas avec Apache/mod_python?

/var/www/html/www.mysite.com

Le site Django est en /var/www/html/www.mysite .com/mysite.

je reçois cette erreur quand je fais une demande/monsite/app/foo:

(grande trace de la pile) AttributeError: 'module' objet n'a pas d'attribut 'commun'

« myapp. commun 'est le premier élément listé après toutes les applications django (par exemple' django.contrib.admin ') dans INSTALLED_APPS dans le fichier settings.py. Si je change l'ordre des modules listés, Django s'interrompt sur le premier chemin d'une de mes applications qu'il rencontre.

Le chemin d'importation Python semble être correct, car il est de trouver mysite.settings:

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

Quel pourrait être le problème? Il est étrange qu'il se plaint de « commune » lorsque la liste réelle contient « mysite.common »:

 
INSTALLED_APPS = (
    'django.contrib.admin', 
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.sites', 
    'mysite.common', 
    .... 

Est-ce un bug Django ou dois-je mal configuré? Peut-être une dépendance externe doit-elle être ajoutée au chemin d'importation? Cela fonctionne correctement avec le serveur de développement Django.

Répondre

1

Votre répertoire mysite contient-il un fichier __init__.py? Il devrait, à mark it as a package.

+0

Oui, et le sous-répertoire de l'application "commune" devrait aussi ... –

+0

sauf s'il s'agit de "common.py" :) – orip

0

Est-ce que mysite.common est un paquetage enregistré sous /var/www/html/www.mysite.com/mysite/common? Si c'est le cas, essayez d'utiliser common au lieu de mysite.common dans INSTALLED_APPS.

0

Je suppose que vous êtes en train d'obscurcir votre nom de module, ce qui est bien ... mais j'ai eu cette erreur quand j'ai nommé mon site Django (mysite, dans votre cas) avec le même nom qu'un Python module qui existe ailleurs dans sys.path. Par exemple, si vous avez créé un site Django appelé math, avec une application appelée common, vous obtiendrez cette erreur car le module mathématique du système Python ne contient pas d'attribut ou de sous-module nommé common.

Vous devrez renommer votre site Django pour ne pas entrer en collision avec l'autre nom de module.

Questions connexes