Kesalahan impor Django - tidak ada modul bernama django.conf.urls.defaults

93

Saya mencoba menjalankan statsd / graphite yang menggunakan django 1.6.

Saat mengakses URL grafit, saya mendapatkan kesalahan modul django

File "/opt/graphite/webapp/graphite/urls.py", baris 15, dari django.conf.urls.defaults import * ImportError: Tidak ada modul bernama default

Namun, saya tidak menemukan paket django default di dalamnya/Library/Python/2.7/site-packages/django/conf/urls/

Tolong bantu memperbaiki masalah ini.

GJain
sumber
4
Versi django apa yang anda gunakan?
yuvi
1
python -c "import django; print (django.get_version ())" 1.6
GJain

Jawaban:

193

django.conf.urls.defaults telah dihapus di Django 1.6 . Jika masalahnya ada pada kode Anda sendiri, Anda akan memperbaikinya dengan mengubah impor menjadi

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

Namun, dalam kasus Anda, masalahnya ada pada aplikasi pihak ketiga, grafit. Masalah telah diperbaiki di cabang master grafit dan versi 0.9.14+.

Dalam Django 1.8+ anda dapat menghapus patternsdari impor, dan menggunakan daftar url()s sebagai gantinya.

from django.conf.urls import url, include
Alasdair
sumber
Periksa juga apakah Anda telah menyetel ROOT_URLCONF di settings.py! Variabel ini juga harus diadaptasi. Dalam kasus saya itu ROOT_URLCONF = 'url' dan harus diubah menjadi ROOT_URLCONF = 'app.urls'
lszrh
pola telah dihapus. Anda dapat langsung menggunakan daftar python untuk menambahkan url daripada menggunakan pola.
Akshay Hazari
@Alasdair Bekerja dengan kode dari django 1.6 dan menemukan pengganti default di sini. Hanya menambahkan jawaban. Sehingga orang lain dapat menemukan semua bantuan di satu tempat.
Akshay Hazari
3

Jika karena alasan tertentu Anda tidak ingin menurunkan versi ke Django 1.5.x atau meningkatkan Grafit maka Anda dapat menerapkan perbaikan ke Grafit lama Anda dengan:

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

..di <graphite_dir>/webapp/graphitedirektori Anda .

Ini membantu saya dengan Graphite 0.9.12 dan Django 1.7 (.5) saya.

(Saya juga harus melakukan:

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

..kemudian setelah saya berhasil memulai Graphite beberapa fiturnya tidak berfungsi. Sekarang mereka bekerja untuk saya tetapi YMMV.)

Greg Dubicki
sumber
1
Terima kasih, tampaknya ini masih terjadi pada iterasi perangkat lunak ini saat ini! Perbaikan Anda bekerja dengan baik untuk saya di Graphite 0.9.12 dan Django 1.6.1!
Andrew White