ImportError: Немає модуля з назвою "django.core.urlresolvers"


167

Я працюю над проектом "Джанго", де мені потрібно створити форму для введення даних. Я намагався імпортувати reverseз django.core.urlresolvers. Я отримав помилку:

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

Я використовую Python 3.5.2, Django 2.0 та MySQL.


1
схоже, що django не встановлено на вашому PATH.
Håken Lid

Відповіді:


347

Django 2.0 видаляє django.core.urlresolversмодуль, до якого було переміщено django.urlsверсію 1.10. Ви повинні змінити будь-який імпорт, щоб натомість використовувати django.urls , як-от так:

from django.urls import reverse

Зауважте, що Django 2.0 видаляє деякі функції, які раніше були django.core.urlresolvers, тому вам, можливо, доведеться внести ще кілька змін, перш ніж ваш код працює. Докладніше про ці додаткові зміни див. У функціях, які застаріли в 1.9 .


1
У мене є помилка в сторонньому модулі: як я можу вирішити? Я міг би відредагувати модуль, але що робити тоді, коли я оновлюю нову некорекційну версію? Чи можливо переосмислити?
Фабіо

Ви можете оновити та надіслати запит на тягнення до модуля третьої сторони
Gajit

62

якщо ви хочете імпортувати реверс, імпортуйте його з django.urls

from django.urls import reverse

27

Вам потрібно замінити всі випадки:

from django.core.urlresolvers import reverse

до:

from django.urls import reverse

введіть тут опис зображення

ПРИМІТКА. Те саме стосується і reverse_lazy

в Pycharm Cmd+ Shift+ R для запуску заміни в Path.


Я отримав таку ж помилку, спробував це і тепер отримаю помилку Файл "C: \ Users \ displ \ Code \ .virtualenvs \ dev \ lib \ site-пакети \ cms \ utils \ i18n.py", рядок 4, у <module> від django.core.urlresolvers імпортує get_resolver, LocaleRegexURLResolver ModuleNotFoundError: Жоден модуль під назвою "django.core.urlresolvers" не повинен був робити те, що правильна відповідь сказала замінити всі посилання. Джанго все-таки смокче, хоча багато чого не працює, якщо йти.
Багатий Б'янко

3

Для тих, хто, можливо, намагається створити Travis Build, шлях за замовчуванням, з якого встановлено Django, від requirements.txtфайлу вказує на репо, django_extensionsмодуль якого не оновлювався. Наразі єдине вирішення - це встановити з головного відділення за допомогою pip. Саме тут робиться пластир. Але поки що доведеться чекати.

Ти можеш спробувати це тим часом, це може допомогти

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

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




1

Якщо ваша побудова на TravisCI не працює з цієї конкретної причини, ви можете вирішити проблему, оновивши розширення Django у своїх вимогах.txt

pip install --upgrade django-extensions

Це дозволить оновити розширення для використання модулів Django 2+.


1

urlresolver видалено у вищій версії Django - оновіть установку django. Я виправив це за допомогою наступної команди.

pip install django==2.0 --upgrade

1

Щоб вирішити цю проблему, ви не оцінюєте Djangoбудь-яку версію, меншу за 2.0. pipвстановлення Django==1.11.29.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.