Ich probiere das Django-Tutorial auf der Website djangoproject.com aus, aber wenn ich den Bereich erreiche, in dem ich die ersten "Makemigrations-Umfragen" durchführe, erhalte ich immer wieder den folgenden Fehler:
ImportError: Kein Modul namens apps
Traceback (letzter Aufruf zuletzt): Datei "manage.py", Zeile 22, in Execute_from_command_line (sys.argv) Datei "/ Library/Python/2.7/site-packages/Django/core/management/__ init__.py ", Zeile 338, in execute_from_command_line Utility.execute () File" /Library/Python/2.7/site- packages/Django/core/management/__ init__.py ", Zeile 312, in execute Django.setup () File" /Library/Python/2.7/site-packages/Django/__init__. py ", Zeile 18, in setup apps.populate (settings.INSTALLED_APPS) File" /Library/Python/2.7/site-packages/Django/apps/registry.py ", Zeile 85 , in app_config = AppConfig.create (Eintrag) Datei "/Library/Python/2.7/site-packages/Django/apps/config.py", Zeile 112, in create mod = import_module (mod_path) Datei "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", Zeile 37, in import_module __import __ (name) [.__ __.]
Wie kann ich diesen Fehler beheben?
Ihr Problem ist, dass Ihre Django-Version nicht mit der Version des Tutorials übereinstimmt.
In Django 1.9+ erstellt der Befehl startapp automatisch eine App-Konfigurationsklasse. In dem Lernprogramm werden Sie aufgefordert, polls.apps.PollsConfig
zu INSTALLED_APPS
hinzuzufügen.
Bei Django 1.8 und früheren Versionen fordert das Tutorial Sie auf, polls
zu INSTALLED_APPS
hinzuzufügen. Wenn Sie stattdessen polls.apps.PollsConfig
hinzufügen, wird ein Importfehler angezeigt, es sei denn, Sie erstellen die PollsConfig
manuell.
Ich hatte ein wirklich ähnliches Problem , aber eines, das definitiv anders war als das OP . Trotzdem war dieser Beitrag eine der ersten Antworten, die ich beim Debuggen meines Problems gefunden habe. Daher entführe ich ihn mit einer Antwort auf meine Frage.
In der App, die ich erstellt habe, sind Apps unter einem übergeordneten Namespace verschachtelt, z. customapp.polls
statt nur polls
. Der Fehler, den ich sah, war
ModuleNotFoundError: No module named 'polls'
sieht aber wahrscheinlich so aus, wenn Sie mit Python 3.5 oder älter arbeiten:
ImportError: No module named polls
Beachten Sie, dass im ursprünglichen Beitrag polls
anstelle von apps
steht.
customapp.polls.apps.PollsConfig
und customapp.polls.apps
anstelle von apps
fehlen, dies kann jedoch nur zu Versionsunterschieden führen.PollsConfig
Unterklasse definiert hatte. Wie @Alasdair vorschlägt, liegt der Grund dafür oft darin, dass Sie keine AppConfig
-Unterklasse hinzugefügt haben.In meinem Fall hat sich der Fehler darüber beschwert, dass das Modul polls
fehlt (nicht apps
). Und da @Monils answer mein Problem "gelöst" hat, konnte ich es auf meine tatsächliche Konfiguration eingrenzen. Meine Konfiguration sah äquivalent aus zu:
class PollsConfig(AppConfig):
name = 'polls'
aber Da ich meine Apps unter ein übergeordnetes Modul gestellt habe, hätte ich schreiben sollen:
class PollsConfig(AppConfig):
name = 'customapp.polls'
Im Tutorial ist ein Fehler aufgetreten.
Es wird angewiesen, polls.apps.PollsConfig
im Abschnitt INSTALLED_APPS
der settings.py
-Datei hinzuzufügen. Ich habe es von polls.apps.PollsConfig
zu einfach polls
geändert und das hat den Trick getan. Ich konnte erfolgreich migrieren.
Ich hoffe, das hilft anderen Menschen, die mit ähnlichen Problemen konfrontiert sind.
Sie müssen die erforderlichen Pakete in Ihrem virtualenv installieren, um das Django-Projekt auszuführen. Erstellen Sie in erster Linie virtualenv für Ihr Projekt.
virtualenv env #For python 2.7
virtualenv -p python3 env #For python 3.4
Actiavte env zur Installation Ihrer Anforderungen.
source env/bin/activate
Mit pip können Sie dann Ihre Pakete installieren.
pip install Django
Und dann starte dein Django-Projekt.
In Django 1.10.6 hatte ich den gleichen Fehler ("no module named ..."). Die Lösung, die für mich funktioniert hat, ist das Ändern von "polls.apps.PollsConfig"
für "mysite.polls"
in settings.py
. o.O.