Lỗi nhập Django - không có mô-đun nào có tên django.conf.urls.defaults


93

Tôi đang cố gắng chạy statsd / graphite sử dụng django 1.6.

Trong khi truy cập URL graphite, tôi gặp lỗi mô-đun django

Tệp "/opt/graphite/webapp/graphite/urls.py", dòng 15, trong từ django.conf.urls.defaults import * ImportError: Không có mô-đun nào có tên mặc định

Tuy nhiên, tôi không tìm thấy gói django mặc định bên trong/Library/Python/2.7/site-packages/django/conf/urls/

Vui lòng giúp khắc phục sự cố này.


4
Bạn đang sử dụng phiên bản django nào?
yuvi

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

Câu trả lời:


193

django.conf.urls.defaults đã bị loại bỏ trong Django 1.6 . Nếu vấn đề xảy ra trong mã của riêng bạn, bạn sẽ khắc phục bằng cách thay đổi nhập thành

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

Tuy nhiên, trong trường hợp của bạn, vấn đề nằm ở ứng dụng của bên thứ ba, graphite. Sự cố đã được khắc phục trong nhánh chính của graphite và phiên bản 0.9.14+.

Trong Django 1.8+, bạn có thể xóa patternskhỏi quá trình nhập và url()thay vào đó sử dụng danh sách các s.

from django.conf.urls import url, include

Ngoài ra, hãy kiểm tra xem bạn đã đặt ROOT_URLCONF trong settings.py! Biến này cũng phải được điều chỉnh. Trong trường hợp của tôi, đó là ROOT_URLCONF = 'urls' và phải được đổi thành ROOT_URLCONF = 'app.urls'
Lukas Schulze

các mẫu đã bị xóa. Bạn có thể sử dụng trực tiếp danh sách python để thêm url thay vì sử dụng các mẫu.
Akshay Hazari

@Alasdair Đang làm việc với mã từ django 1.6 và tìm thấy thay thế mặc định ở đây. Chỉ là thêm vào câu trả lời. Để người khác có thể tìm mọi sự trợ giúp tại một nơi.
Akshay Hazari

3

Nếu vì lý do nào đó mà bạn không muốn hạ cấp xuống Django 1.5.x hoặc nâng cấp Graphite thì bạn có thể áp dụng bản sửa lỗi cho Graphite cũ hơn của mình bằng:

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

.. trong <graphite_dir>/webapp/graphitedir của bạn .

Điều này đã giúp tôi với Graphite 0.9.12 và Django 1.7 (.5) của tôi.

(Tôi cũng phải làm:

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

..sau khi tôi cố gắng khởi động Graphite, một số tính năng của nó không hoạt động. Bây giờ họ làm việc cho tôi nhưng YMMV.)


1
Cảm ơn, điều này vẫn xảy ra trong phiên bản hiện tại của phần mềm này! Các bản sửa lỗi của bạn hoạt động tốt đối với tôi trong Graphite 0.9.12 và Django 1.6.1!
Andrew White
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.