2017-01-31 2 views
0

Ich bekomme "ModuleNotFoundError: No module named 'blog'" Fehler beim Hinzufügen meiner Blog-App zum Abschnitt INSTALLED_APPS von settings.py. Ich habe festgestellt, dass es etwas damit zu tun hat, wie ich die "Blog" -App unter INSTALLED_APPS hinzugefügt habe. Wenn ich die "Blog" -Referenz von INSTALLED_APPS entferne, verschwindet der Fehler. Es sieht so aus, dass Django Verzeichnis für meine Blog-App nicht finden kann?Django sagt - Kein Modul namens "Blog"

Ich habe eine Sache anders gemacht, und das ist Einsatz:

python manage.py startapp blog /myproject 

Unterschied hier ist das /myproject Verzeichnis spezifiziert und nicht mit:

python manage.py startapp blog 

die sie unter Stammverzeichnis myproject platzieren wird. Ich wollte vermeiden, das App-Verzeichnis im Stammordner hinzuzufügen, damit ich besser organisiert bleibe. Aber es sieht so aus, als ob Django das nicht mag, oder ich referenziere das nicht richtig im Abschnitt INSTALLED_APPS?

Mein Projektverzeichnis ist wie folgt:

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 

Inside my settings.py Ich habe mein Setup App blog:

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

weil Ihre Anwendung in 'my_project' Modul empfehlen, ich glaube, Sie sollten' my_project.blog' in 'INSTALLED_APPS' schreiben anstatt einfach 'blog'. – Vincent

+0

Danke, das hat das repariert. –

+0

Ich habe das gleiche Problem, wenn es im Admin-Bereich richtig funktioniert, aber Problem, wenn ich my_project_name.blog nichts hinzufügen Arbeit –

Antwort

1

Django Ihre Anwendung importieren muss genannt werden zu können, in der Regel bedeutet dies, einschließlich der vollständigen Pfad relativ zum Stammverzeichnis 'myproject.blog'.

Sie <full_path_to_your_project>/myproject/myproject-PYTHONPATH hinzufügen könnte, so dass Sie blog importieren können, aber ich würde es nicht

+0

Vielen Dank, dass die Lösung, so Lehre hier ist, wenn die Verwendung von nicht-Standard-Django-Struktur ist der vollständige Pfad zur App enthalten. –

+0

Ich würde nicht sagen, dass Ihre Verzeichnisstruktur ungewöhnlich ist. Wenn Sie 'import my_app' von einer Shell ausführen können, können Sie sie als Anwendung hinzufügen –

2

Directory-Struktur ist ungewöhnlich. Üblichere und die, die Ihre App Anschluss entspricht Blog würde

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

das ist der richtige Weg. Module und Site-Ordner müssen zusammenhalten – CagCak