Ошибка импорта: ни один модуль с именем '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 .

knbk
источник
1
Я имею эту ошибку в стороннем модуле: как я могу решить? Я мог бы отредактировать модуль, но что тогда, когда я обновляю новую исправленную версию? Можно ли переопределить?
Фабио
Вы можете обновить и отправить запрос на извлечение стороннему модулю
Gajit
62

если вы хотите импортировать реверс, импортируйте его из django.urls

from django.urls import reverse
Surajano
источник
27

Вам необходимо заменить все вхождения:

from django.core.urlresolvers import reverse

чтобы:

from django.urls import reverse

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

ПРИМЕЧАНИЕ: то же самое относится к reverse_lazy

в PyCharm Cmd+ Shift+ R для запуска Replacment в пути.

andilabs
источник
Я получил ту же ошибку, попробовал это и теперь получаю ошибку Файл "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

emalinga
источник
2

используйте это:

from django.urls import reverse
Наимур Рахман
источник
2

Для версии django более 2.0 используйте:

from django.urls import reverse

в вашем файле models.py.

Кази Имам Хасан
источник
1

Если ваши сборки на TravisCI терпят неудачу по этой конкретной причине, вы можете решить эту проблему, обновив расширения Django в вашем файле require.txt.

pip install --upgrade django-extensions

Это обновит расширения для использования модулей Django 2+.

willieswanjala
источник
1

urlresolver был удален в более поздней версии Django - Пожалуйста, обновите установку django. Я исправил это с помощью следующей команды.

pip install django==2.0 --upgrade
Bapuray
источник
1

Чтобы решить эту проблему, вы Djangoдолжны понизить версию до любой версии, меньшей 2.0. pipустановленной Django==1.11.29.

user13070322
источник