我们在尝试安装调试graphite webapp时,或者使用django制作网站时会遇见此问题。或者类似的问题.

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

原因在于:Django 1.6 时改变了模块结构,原先的defaults模块被去除了。为了解决这一问题你有两种方式。

1:回滚到1.5.x版本上

2:找到代码问题行,将此行改为

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

相信能解决你的问题


如果你是在调试暗转graphite webapp时遇见此问题,下列的Python脚本能够一次性修复所有的有问题的模块.

python scirpte name: fixerrorNomodule.py
import re
files = ["/opt/graphite/webapp/graphite/urls.py",
"/opt/graphite/webapp/graphite/urls.py",
"/opt/graphite/webapp/graphite/render/urls.py",
"/opt/graphite/webapp/graphite/cli/urls.py",
"/opt/graphite/webapp/graphite/composer/urls.py",
"/opt/graphite/webapp/graphite/metrics/urls.py",
"/opt/graphite/webapp/graphite/browser/urls.py",
"/opt/graphite/webapp/graphite/account/urls.py",
"/opt/graphite/webapp/graphite/dashboard/urls.py",
"/opt/graphite/webapp/graphite/whitelist/urls.py",
"/opt/graphite/webapp/graphite/graphlot/urls.py",
"/opt/graphite/webapp/graphite/version/urls.py",
"/opt/graphite/webapp/graphite/events/urls.py"]
files2= ["/opt/graphite/webapp/graphite/urls.py"]
str = 'from django.conf.urls.defaults import *\n'
for file in files: 
    print file
    f = open(file, "r+")
    flists = f.readlines()
    print len(flists),
    for i in range(len(flists)):
        if flists[i] == str:
            print flists[i]
            flists[i] = "from django.conf.urls import patterns, url, include \n"
        else:
            pass
    f = open(file, "w+")
    f.writelines(flists)
    f.close()