关于python:Django导入错误 – 没有名为django.conf.urls.defaults的模块

Django import error - no module named django.conf.urls.defaults

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

访问graphite url时,我得到django模块错误

File"/opt/graphite/webapp/graphite/urls.py", line 15, in
from django.conf.urls.defaults import *
ImportError: No module named defaults

但是,我在/Library/Python/2.7/site-packages/django/conf/urls/中找不到默认的django包。

请帮助解决此问题。


django 1.6中删除了django.conf.urls.defaults。如果问题出现在您自己的代码中,您可以通过将导入更改为

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

但是,在您的案例中,问题出现在第三方应用程序graphite中。这个问题已经在石墨的主分支和0.9.14+版本中得到解决。

在Django 1.8+中,您可以从导入中删除patterns,并使用url()的列表。

1
from django.conf.urls import url, include


如果出于某种原因,您不想降级到django 1.5.x或升级graphite,那么您可以使用以下方法将修复应用到旧的graphite:

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

…在你的/webapp/graphite目录中。

这有助于我的石墨0.9.12和django 1.7(.5)。

(我还必须这样做:

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

…后来,就像我开始使用石墨一样,它的一些特性不起作用。现在他们为我工作,但YMMV。)