wake-up-neo.net

Django - ImportError: Kein Modul namens apps

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?

4
Monil

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.

6
Alasdair

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.

Problem

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.

Antworten aus diesem Beitrag

  • @ Alasdair's Antwort ist ein guter Versuch. Wenn ich ein ähnliches Problem erzwinge, erhalte ich eine Fehlermeldung, dass customapp.polls.apps.PollsConfig und customapp.polls.apps anstelle von apps fehlen, dies kann jedoch nur zu Versionsunterschieden führen.
  • @ Monils Antwort "löste" mein Problem, obwohl ich eine PollsConfig Unterklasse definiert hatte. Wie @Alasdair vorschlägt, liegt der Grund dafür oft darin, dass Sie keine AppConfig-Unterklasse hinzugefügt haben.

Lösung

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'
4
Tony S Yu

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.

4
Monil

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.

1
MicroPyramid

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.

0
Paco Barter