ImportError: Aucun module nommé 'django.core.urlresolvers'


167

Je travaille sur un projet Django où je dois créer un formulaire pour les entrées. J'ai essayé d'importer reversedepuis django.core.urlresolvers. J'ai une erreur:

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

J'utilise Python 3.5.2, Django 2.0 et MySQL.


1
ressemble à django n'est pas installé sur votre PATH.
Håken Lid

Réponses:


347

Django 2.0 supprime le django.core.urlresolversmodule, qui a été déplacé vers la django.urlsversion 1.10. Vous devez modifier toute importation pour utiliser django.urls à la place, comme ceci:

from django.urls import reverse

Notez que Django 2.0 supprime certaines fonctionnalités qui étaient auparavant django.core.urlresolvers, donc vous devrez peut-être apporter d'autres modifications avant que votre code fonctionne. Voir les fonctionnalités obsolètes dans la version 1.9 pour plus de détails sur ces modifications supplémentaires.


1
J'ai cette erreur dans un module tiers: comment puis-je résoudre? Je pourrais éditer le module mais que faire alors quand je mets à niveau une nouvelle version non corrigée? Est-il possible de passer outre?
fabio

Vous pouvez mettre à jour et envoyer une pull request au module tiers
Gajit

62

si vous souhaitez importer un reverse, importez-le depuis django.urls

from django.urls import reverse

27

Vous devez remplacer toutes les occurrences de:

from django.core.urlresolvers import reverse

à:

from django.urls import reverse

entrez la description de l'image ici

REMARQUE: la même chose s'applique à reverse_lazy

dans Pycharm Cmd+ Shift+ R pour démarrer le remplacement dans Path.


J'ai eu la même erreur, j'ai essayé ceci et j'obtiens maintenant le fichier d'erreur "C: \ Users \ dépl \ Code \ .virtualenvs \ dev \ lib \ site-packages \ cms \ utils \ i18n.py", ligne 4, dans <module> de django.core.urlresolvers import get_resolver, LocaleRegexURLResolver ModuleNotFoundError: Aucun module nommé 'django.core.urlresolvers', n'a dû faire ce que la bonne réponse a dit de remplacer toutes les références. Django est plutôt nul, beaucoup de choses ne fonctionnent pas dès le départ.
Rich Bianco

3

Pour ceux qui pourraient essayer de créer un Travis Build, le chemin par défaut à partir duquel Django est installé à partir du requirements.txtfichier pointe vers un dépôt dont le django_extensionsmodule n'a pas été mis à jour. La seule solution de contournement, pour l'instant, consiste à installer à partir de la branche principale à l'aide de pip. C'est là que le patch est fabriqué. Mais pour l'instant, nous devrons attendre.

Vous pouvez essayer ceci en attendant, cela pourrait aider

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

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



2

Pour la version django supérieure à 2.0, utilisez:

from django.urls import reverse

dans votre fichier models.py.


1

Si vos builds sur TravisCI échouent pour cette raison particulière, vous pouvez résoudre le problème en mettant à jour les extensions Django dans votre requirements.txt

pip install --upgrade django-extensions

Cela mettra à jour les extensions pour utiliser les modules Django 2+.


1

urlresolver a été supprimé dans la version supérieure de Django - Veuillez mettre à jour votre installation de django. Je l'ai corrigé en utilisant la commande suivante.

pip install django==2.0 --upgrade

1

Pour résoudre ce problème, vous réduisez la note Djangoà une version inférieure à l' 2.0. pipinstallation Django==1.11.29.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.