Error de importación de Django: no hay ningún módulo llamado django.conf.urls.defaults

93

Estoy tratando de ejecutar statsd / graphite que usa django 1.6.

Al acceder a la URL de grafito, obtengo el error del módulo django

Archivo "/opt/graphite/webapp/graphite/urls.py", línea 15, desde django.conf.urls.defaults import * ImportError: Ningún módulo llamado defaults

Sin embargo, no encuentro el paquete django predeterminado dentro/Library/Python/2.7/site-packages/django/conf/urls/

Ayuda a solucionar este problema.

GJain
fuente
4
¿Qué versión de django estás usando?
Yuvi
1
python -c "import django; print (django.get_version ())" 1.6
GJain

Respuestas:

193

django.conf.urls.defaults ha sido eliminado en Django 1.6 . Si el problema estaba en su propio código, lo solucionaría cambiando la importación a

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

Sin embargo, en su caso, el problema está en una aplicación de terceros, Graphite. El problema se ha solucionado en la rama maestra de Graphite y en la versión 0.9.14+.

En Django 1.8+ puede eliminar patternsde la importación y usar una lista de correos electrónicos url()en su lugar.

from django.conf.urls import url, include
Alasdair
fuente
¡Compruebe también si ha configurado ROOT_URLCONF en su settings.py! Esta variable también debe adaptarse. En mi caso, fue ROOT_URLCONF = 'urls' y tuvo que cambiarse a ROOT_URLCONF = 'app.urls'
Lukas Schulze
Se han eliminado los patrones. Puede usar directamente una lista de Python para agregar URL en lugar de usar patrones.
Akshay Hazari
@Alasdair Estaba trabajando con un código de django 1.6 y encontré el reemplazo predeterminado aquí. Solo estaba agregando a la respuesta. Para que alguien más pudiera encontrar toda la ayuda en un solo lugar.
Akshay Hazari
3

Si por alguna razón no desea degradar a Django 1.5.xo actualizar Graphite, puede aplicar la solución a su Graphite anterior con:

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

..en su <graphite_dir>/webapp/graphitedir.

Esto me ayudó con Graphite 0.9.12 y Django 1.7 (.5).

(También tuve que hacer:

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' {} \;

..más adelante, cuando logré iniciar Graphite, algunas de sus características no funcionaron. Ahora funcionan para mí, pero YMMV.)

Greg Dubicki
fuente
1
Gracias, este todavía parece ser el caso en la versión actual de este software. ¡Tus correcciones me funcionan bien en Graphite 0.9.12 y Django 1.6.1!
Andrew White