Помилка імпорту Django - немає модуля з іменем django.conf.urls.defaults


93

Я намагаюся запустити statsd / graphite, який використовує django 1.6.

Під час доступу до графітової URL-адреси я отримую помилку модуля django

Файл "/opt/graphite/webapp/graphite/urls.py", рядок 15, з файлу django.conf.urls.defaults import * ImportError: Немає модуля з іменами за замовчуванням

Однак я не знаходжу за замовчуванням пакет django всередині/Library/Python/2.7/site-packages/django/conf/urls/

Будь ласка, допоможіть вирішити цю проблему.


4
Яку версію django ви використовуєте?
юві

1
python -c "імпорт django; print (django.get_version ())" 1.6
GJain

Відповіді:


193

django.conf.urls.defaults було видалено в Django 1.6 . Якби проблема була у вашому власному коді, ви виправили б це, змінивши імпорт на

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

Однак у вашому випадку проблема полягає в сторонньому додатку, графіті. Проблему виправлено у головній гілці графіту та версії 0.9.14+.

У Django 1.8+ ви можете видалити patternsз імпорту та url()замість цього використати список s.

from django.conf.urls import url, include

Також перевірте, чи ви встановили ROOT_URLCONF у своїх settings.py! Ця змінна також повинна бути адаптована. У моєму випадку це був ROOT_URLCONF = 'urls' і його потрібно було змінити на ROOT_URLCONF = 'app.urls'
Лукас Шульце,

шаблони видалено. Ви можете безпосередньо використовувати список python для додавання URL-адрес замість використання шаблонів.
Акшай Хазарі

@Alasdair Працював з кодом з django 1.6 і знайшов тут заміну за замовчуванням. Просто додавав до відповіді. Щоб хтось інший міг знайти всю допомогу в одному місці.
Акшай Хазарі

3

Якщо з якихось причин ви не хочете перейти на Django 1.5.x або оновити Graphite, тоді ви можете застосувати виправлення до свого попереднього Graphite за допомогою:

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

..у вашому <graphite_dir>/webapp/graphiteреж.

Це допомогло мені з моїми Graphite 0.9.12 та Django 1.7 (.5).

(Мені також довелося зробити:

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

.. пізніше, як після того, як мені вдалося запустити Graphite, деякі його функції не працювали. Зараз вони працюють на мене, але YMMV.)


1
Дякую, це все ще має місце у поточній ітерації цього програмного забезпечення! Ваші виправлення добре працюють для мене в Graphite 0.9.12 та Django 1.6.1!
Ендрю Уайт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.