Ошибка импорта: нет модуля с именем 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.
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
И это все.
Это полезно для не обновленных пакетов, которые все еще ищут по старому пути.