ImportError: Kein Modul mit dem Namen 'django.core.urlresolvers'


166

Ich arbeite an einem Django-Projekt, bei dem ich ein Formular für Eingaben erstellen muss. Ich habe versucht, reverseaus zu importieren django.core.urlresolvers. Ich habe eine Fehlermeldung erhalten:

line 2, in from django.core.urlresolvers import reverse ImportError: No module named 'django.core.urlresolvers'

Ich benutze Python 3.5.2, Django 2.0 und MySQL.


1
Es sieht so aus, als ob Django nicht auf Ihrem PATH installiert ist.
Håken Deckel

Antworten:


346

Django 2.0 entfernt das django.core.urlresolversModul, auf das django.urlsin Version 1.10 verschoben wurde . Sie sollten jeden Import so ändern, dass stattdessen django.urls verwendet wird:

from django.urls import reverse

Beachten Sie, dass Django 2.0 einige Funktionen entfernt, die zuvor vorhanden waren django.core.urlresolvers, sodass Sie möglicherweise weitere Änderungen vornehmen müssen, bevor Ihr Code funktioniert. Weitere Informationen zu diesen zusätzlichen Änderungen finden Sie in den in 1.9 veralteten Funktionen .


1
Ich habe diesen Fehler in einem Modul eines Drittanbieters: Wie kann ich ihn beheben? Ich könnte das Modul bearbeiten, aber was passiert dann, wenn ich eine neue nicht korrigierte Version aktualisiere? Ist es möglich zu überschreiben?
Fabio

Sie können eine Pull-Anfrage aktualisieren und an das Modul eines
Drittanbieters

62

Wenn Sie Reverse importieren möchten, importieren Sie es von django.urls

from django.urls import reverse

27

Sie müssen alle Vorkommen von Folgendem ersetzen:

from django.core.urlresolvers import reverse

zu:

from django.urls import reverse

Geben Sie hier die Bildbeschreibung ein

HINWEIS: Gleiches gilt für reverse_lazy

in PyCharm Cmd+ Shift+ R für replacment in Weg beginnen.


Ich habe den gleichen Fehler erhalten, habe dies versucht und erhalte jetzt die Fehlerdatei "C: \ Benutzer \ disp \ Code \ .virtualenvs \ dev \ lib \ site-packages \ cms \ utils \ i18n.py", Zeile 4, in <Modul> von django.core.urlresolvers import get_resolver, LocaleRegexURLResolver ModuleNotFoundError: Kein Modul mit dem Namen 'django.core.urlresolvers' musste die richtige Antwort tun, um alle Referenzen zu ersetzen. Django ist ein bisschen beschissen, viele Sachen funktionieren nicht von Anfang an.
Rich Bianco

3

Für diejenigen, die möglicherweise versuchen, einen Travis Build zu erstellen, requirements.txtverweist der Standardpfad, über den Django aus der Datei installiert wird, auf ein Repo, dessen django_extensionsModul nicht aktualisiert wurde. Die einzige Problemumgehung besteht derzeit darin, mithilfe von pip vom Hauptzweig aus zu installieren. Hier wird der Patch erstellt. Aber jetzt müssen wir warten.

Sie können dies in der Zwischenzeit versuchen, es könnte helfen

- pip install git+https://github.com/chibisov/drf-extensions.git@master

- pip install git+https://github.com/django-extensions/django-extensions.git@master



2

Für Django-Versionen größer als 2.0 verwenden Sie:

from django.urls import reverse

in Ihrer Datei models.py.


1

Wenn Ihre Builds auf TravisCI aus diesem bestimmten Grund fehlschlagen, können Sie das Problem beheben, indem Sie die Django-Erweiterungen in Ihrer Anforderung.txt aktualisieren

pip install --upgrade django-extensions

Dadurch werden die Erweiterungen aktualisiert, um Django 2+ -Module zu verwenden.


1

urlresolver wurde in der höheren Version von Django entfernt - Bitte aktualisieren Sie Ihre Django-Installation. Ich habe es mit dem folgenden Befehl behoben.

pip install django==2.0 --upgrade

1

Um dies zu lösen, stufen Sie die DjangoVersion auf eine Version herunter, die kleiner als die 2.0. pipInstallation ist Django==1.11.29.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.