ImportError: nenhum módulo chamado 'django.core.urlresolvers'

167

Estou trabalhando no projeto Django, onde preciso criar um formulário para entradas. Eu tentei importarreverse de django.core.urlresolvers. Eu recebi um erro:

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

Estou usando Python 3.5.2, Django 2.0 e MySQL.

viratayya salimath
fonte
1
parece que o django não está instalado no seu PATH.
Håken Lid

Respostas:

347

O Django 2.0 remove o django.core.urlresolversmódulo, que foi movido para a django.urlsversão 1.10. Você deve alterar qualquer importação para usar o django.urls , assim:

from django.urls import reverse

Observe que o Django 2.0 remove alguns recursos que estavam anteriormente django.core.urlresolvers, então você pode precisar fazer mais algumas alterações antes que seu código funcione. Veja os recursos preteridos em 1.9 para obter detalhes sobre essas alterações adicionais.

knbk
fonte
1
Eu tenho esse erro em um módulo de terceiros: como posso resolver? Eu poderia editar o módulo, mas e quando atualizo uma nova versão não corrigida? É possível substituir?
Fabio
Você pode atualizar e enviar uma solicitação de recebimento para o terceiro módulo do partido
Gajit
62

Se você deseja importar reverso, importe-o de django.urls

from django.urls import reverse
Surajano
fonte
27

Você precisa substituir todas as ocorrências de:

from django.core.urlresolvers import reverse

para:

from django.urls import reverse

insira a descrição da imagem aqui

NOTA: O mesmo se aplica a reverse_lazy

no Pycharm Cmd+ Shift+ R para iniciar a substituição no Path.

andilabs
fonte
Eu obtive o mesmo erro, tentei isso e agora recebo o arquivo "C: \ Users \ displ \ Code \ .virtualenvs \ dev \ lib \ pacotes de sites \ cms \ utils \ i18n.py", linha 4, no <module> de django.core.urlresolvers import get_resolver, LocaleRegexURLResolver ModuleNotFoundError: Nenhum módulo chamado 'django.core.urlresolvers' teve que fazer a resposta correta que dizia substituir todas as referências. No entanto, o Django é péssimo, muitas coisas não funcionam desde o início.
22318 Rich Bianco
3

Para aqueles que podem estar tentando criar um Travis Build, o caminho padrão a partir do qual o Django é instalado a partir do requirements.txtarquivo aponta para um repositório cujo django_extensionsmódulo não foi atualizado. A única solução alternativa, por enquanto, é instalar a partir da ramificação principal usando o pip. É aí que o patch é feito. Mas, por enquanto, teremos que esperar.

Enquanto isso, você pode tentar fazer isso.

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

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

emalinga
fonte
2

use este:

from django.urls import reverse
naimur rahman
fonte
2

Para a versão do django maior que 2.0, use:

from django.urls import reverse

no seu arquivo models.py.

Kazi Imam Hasan
fonte
1

Se suas compilações no TravisCI estão falhando por esse motivo específico, você pode resolver o problema atualizando as extensões do Django nos seus requisitos.txt

pip install --upgrade django-extensions

Isso atualizará as extensões para usar os módulos do Django 2+.

willieswanjala
fonte
1

O urlresolver foi removido na versão superior do Django - Atualize sua instalação do django. Corrigi-o usando o seguinte comando.

pip install django==2.0 --upgrade
Bapuray
fonte
1

Para resolver isso, você reduz o nível Djangopara qualquer versão menor que a 2.0. pipinstalação Django==1.11.29.

user13070322
fonte