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.


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

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.)


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.