2017-01-31 2 views
0

Je reçois erreur "ModuleNotFoundError: No module named 'blog'" lorsque ajouter mon blog à la section INSTALLED_APPS de settings.py. J'ai déterminé que cela avait quelque chose à voir avec la façon dont j'ai ajouté l'application "blog" sous INSTALLED_APPS. Lorsque je supprime la référence «blog» de INSTALLED_APPS erreur disparaît. Il semble que Django est incapable de trouver le répertoire pour mon application de blog?Django dit - Aucun module nommé 'blog'

je l'ai fait une chose différemment et qui est utilisé:

python manage.py startapp blog /myproject 
Différence

spécifie ici le répertoire /myproject et ne pas utiliser:

python manage.py startapp blog 

Ce qui le placera sous le répertoire racine myproject. Je voulais éviter d'ajouter le répertoire de l'application dans le dossier racine afin de rester plus organisé. Mais il semble que Django n'aime pas ça ou que je ne le mentionne pas correctement dans la section INSTALLED_APPS?

Mon répertoire de projet est le suivant:

myproject/ 
├── myproject 
│   ├── __init__.py 
│   ├── __pycache__ 
│   │   ├── __init__.cpython-36.pyc 
│   │   ├── settings.cpython-36.pyc 
│   │   ├── urls.cpython-36.pyc 
│   │   └── wsgi.cpython-36.pyc 
│   ├── blog 
│   │   ├── __init__.py 
│   │   ├── admin.py 
│   │   ├── apps.py 
│   │   ├── migrations 
│   │   │   └── __init__.py 
│   │   ├── models.py 
│   │   ├── tests.py 
│   │   └── views.py 
│   ├── settings.py 
│   ├── urls.py 
│   └── wsgi.py 
├── db.sqlite3 
└── manage.py 

Dans mon settings.py j'ai installé mon application blog:

INSTALLED_APPS = [ 
    'django.contrib.admin', 
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
    'blog', 
] 
+0

parce que votre application est en module 'my_project', je crois que vous devriez écrire' 'my_project.blog' dans INSTALLED_APPS' au lieu de simplement «blog». – Vincent

+0

Merci qui a fait le réparer. –

+0

J'ai le même problème, si cela fonctionne correctement dans la section admin, mais le problème sur quand j'ajoute my_project_name.blog rien ne fonctionne –

Répondre

1

Django doit être en mesure d'importer votre application, cela signifie habituellement, y compris le chemin complet par rapport au répertoire racine 'myproject.blog'.

Vous pouvez ajouter <full_path_to_your_project>/myproject/myproject-PYTHONPATH afin que vous puissiez importer blog, mais je ne le recommanderais pas

+0

Merci qui a résolu le problème, donc la leçon ici est si l'utilisation de la structure Django non standard est d'inclure le chemin complet de l'application. –

+0

Je ne dirais pas que votre structure de répertoires est inhabituelle. Si vous pouvez lancer 'import my_app' depuis un shell, vous pouvez l'inclure en tant qu'application –

2

structure du répertoire est inhabituel. Plus d'habitude et celui qui correspond à votre application étant blog nommé serait

myproject/ 
├── myproject 
│ ├── __init__.py 
│ ├── __pycache__ 
│ │ ├── __init__.cpython-36.pyc 
│ │ ├── settings.cpython-36.pyc 
│ │ ├── urls.cpython-36.pyc 
│ │ └── wsgi.cpython-36.pyc 
├── blog 
│ ├── __init__.py 
│ ├── admin.py 
│ ├── apps.py 
│ ├── migrations 
│ │ └── __init__.py 
│ ├── models.py 
│ ├── tests.py 
│ └── views.py 
│ ├── settings.py 
│ ├── urls.py 
│ └── wsgi.py 
├── db.sqlite3 
└── manage.py 
+0

qui est le bon chemin. modules et le dossier du site doivent rester ensemble – CagCak