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

Привет, я работаю над проектом 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.

15 ответов

Решение

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

Обратите внимание, что Django 2.0 удаляет некоторые функции, которые ранее были в django.core.urlresolvers, так что, возможно, вам придется внести еще некоторые изменения, прежде чем ваш код работает. Подробности об этих дополнительных изменениях см. В функциях, устаревших в 1.9.

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

from django.urls import reverse

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

from django.core.urlresolvers import reverse

чтобы:

from django.urls import reverse

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

в Pycharm Cmd+Shift+R для начала замены в Path.

Использовать обратный импорт из django.urls вместо обратного импорта из django.core.urlresolvers

Для тех, кто пытается создать 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

У меня была такая же проблема, но from django.urls import reverse работал на меня

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

from django.urls import reverse

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

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

from django.urls import reverse

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

pip install django==2.0 --upgrade

Обновление Django 1.9 (Python 2.7) до Django 3.2 (Python 3.9)

Это можно решить заменой одной строки bash:

      grep -ril "from django.core.urlresolvers" your_source_code_folder | xargs sed -i 's@from django.core.urlresolvers@from django.urls@g'

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

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

pip install --upgrade django-extensions

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

В моем случае проблема заключалась в том, что я устарел django-strongholdустановлен (0.2.9). И хотя в коде у меня было:

from django.urls import reverse

Я все еще столкнулся с ошибкой. После того, как я обновил версию до django-stronghold==0.4.0 проблема исчезнет.

У меня была такая же ошибка, но это было только из-за моего файла url.py. Я исправил это, как показано ниже:

      from drf_spectacular.views import (
SpectacularAPIView,
SpectacularSwaggerView,
)
from django.contrib import admin
from django.urls import path

urlpatterns = [
    path('admin/', admin.site.urls),
    path('api/schema/', SpectacularAPIView.as_view(), name='api-schema',),
    path('api/docs/',  SpectacularSwaggerView.as_view(url_name='api-schema'), name='api-docs',),
]

Вы можете создать символическую ссылку без проблем.

cd site-packages/django/core
ln -s ../urls/ urlresolvers

И это все.

Это полезно для не обновленных пакетов, которые все еще ищут по старому пути.

Другие вопросы по тегам