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.


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.


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

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.


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




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+.


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

1

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.