Ошибка импорта: ни один модуль с именем 'django.core.urlresolvers'


167

Я работаю над проектом Django, где мне нужно создать форму для входных данных. Я пытался импортировать 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 не установлен на вашем пути.
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 для запуска Replacment в пути.


Я получил ту же ошибку, попробовал это и теперь получаю ошибку Файл "C: \ Users \ displ \ Code \ .virtualenvs \ dev \ lib \ site-packages \ cms \ utils \ i18n.py", строка 4, в <module> из django.core.urlresolvers import get_resolver, LocaleRegexURLResolver ModuleNotFoundError: Ни один модуль с именем django.core.urlresolvers не должен был делать правильный ответ, заменить все ссылки. Тем не менее, Django отстой, многие вещи не работают с самого начала.
Рич Бьянко

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 в вашем файле require.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.