Errore di importazione Django: nessun modulo denominato django.conf.urls.defaults


93

Sto provando a eseguire statsd / graphite che utilizza django 1.6.

Durante l'accesso all'URL di grafite, ottengo un errore del modulo django

File "/opt/graphite/webapp/graphite/urls.py", riga 15, in da django.conf.urls.defaults import * ImportError: Nessun modulo denominato defaults

Tuttavia, non trovo il pacchetto django predefinito all'interno/Library/Python/2.7/site-packages/django/conf/urls/

Aiutaci a risolvere questo problema.


4
Quale versione di django stai usando?
yuvi

1
python -c "import django; print (django.get_version ())" 1.6
GJain

Risposte:


193

django.conf.urls.defaults è stato rimosso in Django 1.6 . Se il problema fosse nel tuo codice, lo risolveresti modificando l'importazione in

from django.conf.urls import patterns, url, include

Tuttavia, nel tuo caso il problema è in un'app di terze parti, la grafite. Il problema è stato risolto nel ramo principale di grafite e nella versione 0.9.14+.

In Django 1.8+ puoi rimuovere patternsdall'importazione e utilizzare un elenco di messaggi di posta elettronica url().

from django.conf.urls import url, include

Controlla anche se hai impostato ROOT_URLCONF nel tuo settings.py! Anche questa variabile deve essere adattata. Nel mio caso era ROOT_URLCONF = 'urls' e doveva essere cambiato in ROOT_URLCONF = 'app.urls'
Lukas Schulze

i modelli sono stati rimossi. Puoi utilizzare direttamente un elenco di python per aggiungere URL invece di utilizzare modelli.
Akshay Hazari

@Alasdair stava lavorando con un codice da django 1.6 e ha trovato qui la sostituzione dei valori predefiniti. Stavo solo aggiungendo alla risposta. In modo che qualcun altro possa trovare tutto l'aiuto in un unico posto.
Akshay Hazari

3

Se per qualche motivo non desideri eseguire il downgrade a Django 1.5.xo aggiornare Graphite, puoi applicare la correzione al tuo vecchio Graphite con:

find ./ -type f -exec sed -i -e 's/from\ django\.conf\.urls\.defaults\ import\ \*/from\ django\.conf\.urls\ import\ \*/g' {} \;

..nella tua <graphite_dir>/webapp/graphitedir.

Questo mi ha aiutato con il mio Graphite 0.9.12 e Django 1.7 (.5).

(Dovevo anche fare:

find ./ -type f -exec sed -i -e 's/mimetype\=/content_type\=/g' {} \;
find ./ -type f -exec sed -i -e 's/content_type\=mimetype/content_type\=content_type/g' {} \;

..più tardi come dopo che sono riuscito ad avviare Graphite alcune delle sue funzionalità non funzionavano. Ora funzionano per me ma YMMV.)


1
Grazie, sembra che questo sia ancora il caso dell'attuale iterazione di questo software! Le tue correzioni funzionano bene per me in Graphite 0.9.12 e Django 1.6.1!
Andrew White
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.