Django导入错误-没有名为django.conf.urls.defaults的模块


93

我正在尝试运行使用Django 1.6的statsd / graphite。

访问石墨URL时,出现Django模块错误

django.conf.urls.defaults中的文件“ /opt/graphite/webapp/graphite/urls.py”,第15行,导入* ImportError:没有名为默认值的模块

但是,我没有找到默认的 django包/Library/Python/2.7/site-packages/django/conf/urls/

请帮助解决此问题。


4
您使用的是哪个Django版本?
yuvi 2013年

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

Answers:


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

还要检查您是否在settings.py中设置了ROOT_URLCONF!此变量也必须进行调整。就我而言,它是ROOT_URLCONF ='urls',必须更改为ROOT_URLCONF ='app.urls'–
Lukas Schulze

模式已被删除。您可以直接使用python列表添加网址,而无需使用模式。
阿克斯哈扎里

@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中对我来说效果很好!
安德鲁·怀特
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.