ImportError: Brak modułu o nazwie „django.core.urlresolvers”

167

Pracuję nad projektem Django, w którym muszę utworzyć formularz do wprowadzania danych. Próbowałem importować reversez django.core.urlresolvers. Wystąpił błąd:

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

Używam Pythona 3.5.2, Django 2.0 i MySQL.

viratayya salimath
źródło
1
wygląda na to, że django nie jest zainstalowane na Twojej PATH.
Håken Lid

Odpowiedzi:

347

Django 2.0 usuwa django.core.urlresolversmoduł, do którego został przeniesiony django.urlsw wersji 1.10. Powinieneś zmienić dowolny import, aby zamiast tego używał django.urls , na przykład:

from django.urls import reverse

Zwróć uwagę, że Django 2.0 usuwa niektóre funkcje, które wcześniej były obecne django.core.urlresolvers, więc być może będziesz musiał wprowadzić więcej zmian, zanim kod zacznie działać. Zobacz funkcje wycofane w wersji 1.9, aby uzyskać szczegółowe informacje na temat tych dodatkowych zmian.

knbk
źródło
1
Mam ten błąd w module innej firmy: jak mogę rozwiązać? Mógłbym edytować moduł, ale co wtedy, gdybym zaktualizował nową, nieskorygowaną wersję? Czy można to zmienić?
fabio
Możesz zaktualizować i wysłać żądanie ściągnięcia do modułu strony trzeciej
Gajit.
62

jeśli chcesz zaimportować wstecz, zaimportuj go z django.urls

from django.urls import reverse
Surajano
źródło
27

Musisz zastąpić wszystkie wystąpienia:

from django.core.urlresolvers import reverse

do:

from django.urls import reverse

wprowadź opis obrazu tutaj

UWAGA: To samo dotyczy reverse_lazy

w Pycharm Cmd+ Shift+ R za rozpoczęcie wymiany w Path.

andilabs
źródło
Wystąpił ten sam błąd, próbowałem tego i teraz otrzymuję błąd Plik „C: \ Users \ displ \ Code \ .virtualenvs \ dev \ lib \ site-packages \ cms \ utils \ i18n.py”, wiersz 4, w <module> z django.core.urlresolvers import get_resolver, LocaleRegexURLResolver ModuleNotFoundError: Żaden moduł o nazwie „django.core.urlresolvers” nie musiał wykonać poprawnej odpowiedzi, aby zastąpić wszystkie odniesienia. Django jest trochę do bani, wiele rzeczy nie działa od samego początku.
Rich Bianco
3

Dla tych, którzy mogą próbować stworzyć Travis Build, domyślna ścieżka, z której Django jest instalowane z requirements.txtpliku, wskazuje na repozytorium, którego django_extensionsmoduł nie został zaktualizowany. Na razie jedynym obejściem jest instalacja z gałęzi głównej za pomocą pip. Tam właśnie powstaje łatka. Ale na razie będziemy musieli poczekać.

W międzyczasie możesz spróbować, to może pomóc

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

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

emalinga
źródło
2

użyj tego:

from django.urls import reverse
naimur rahman
źródło
2

Dla wersji django większej niż 2.0 użyj:

from django.urls import reverse

w pliku models.py.

Kazi Imam Hasan
źródło
1

Jeśli twoje kompilacje w TravisCI zawodzą z tego konkretnego powodu, możesz rozwiązać problem, aktualizując rozszerzenia Django w swoim Requirements.txt

pip install --upgrade django-extensions

Spowoduje to zaktualizowanie rozszerzeń, aby korzystały z modułów Django 2+.

willieswanjala
źródło
1

urlresolver został usunięty w wyższej wersji Django - Proszę zaktualizować swoją instalację django. Naprawiłem to za pomocą następującego polecenia.

pip install django==2.0 --upgrade
Bapuray
źródło
1

Aby rozwiązać ten problem, możesz obniżyć poziom Djangodo dowolnej wersji mniejszej niż 2.0. pipinstalacja Django==1.11.29.

user13070322
źródło