Django,Mezzanine:自动发现错误,引用不存在的模型

时间:2014-02-18 01:57:55

标签: python django mezzanine

我正在研究的Django项目是由其他人在我工作之前建立的。它还有我不熟悉的Mezzanine组件;没有必要使用它。突然间,我有一个错误,我无法弄清楚如何解决......

我有一个应用程序'Dashboards',它开始时没有任何模型 - models.py是空的,没有默认的from django.db import models。今天,我在其中添加了一个名为Banners的模型,并添加了admin.py文件(因为我打算使用Django的管理模块)。我可能已经重新启动了工头,但我从未在模型上运行任何迁移。

随后,我决定删除模型定义以及admin.py,因为我决定创建一个单独的应用程序来处理我正在处理的特定功能。重启领班后,Django不断抛出错误:

ImportError at /
No module named banners.models
Request Method: GET
Request URL:    http://127.0.0.1:9000/
Django Version: 1.5.5
Exception Type: ImportError
Exception Value:    
No module named banners.models
Exception Location: /home/vagrant/www/local/lib/python2.7/site-packages/django/utils/importlib.py in import_module, line 35
Python Executable:  /home/vagrant/www/bin/uwsgi
Python Version: 2.7.3
Python Path:    
['.',
 '',
 '/home/vagrant/www/src/django-experiments',
 '/home/vagrant/www/src/gargoyle',
 '/home/vagrant/www/src/nexus',
 '/home/vagrant/www/local/lib/python2.7/site-packages/newrelic-2.6.0.5/newrelic/bootstrap',
 '/home/vagrant/www/lib/python2.7',
 '/home/vagrant/www/lib/python2.7/plat-linux2',
 '/home/vagrant/www/lib/python2.7/lib-tk',
 '/home/vagrant/www/lib/python2.7/lib-old',
 '/home/vagrant/www/lib/python2.7/lib-dynload',
 '/usr/lib/python2.7',
 '/usr/lib/python2.7/plat-linux2',
 '/usr/lib/python2.7/lib-tk',
 '/home/vagrant/www/local/lib/python2.7/site-packages']
Server time:    Tue, 18 Feb 2014 01:13:55 +0000

更具体地说,在:

./urls.py in <module>
admin.autodiscover() ...
▶ Local vars
/home/vagrant/www/local/lib/python2.7/site-packages/mezzanine/boot/__init__.py in autodiscover
    django_autodiscover(*args, **kwargs) ...
▶ Local vars

我搜索了我的所有来源,绝对不是我在任何地方导入'横幅'。什么是完全清除它的正确方法?

1 个答案:

答案 0 :(得分:2)

如果你绝对不在任何地方导入横幅(搜索你的代码库应该确认这一点),那么你可能已经编译了仍然引用旧东西的python文件。

我无法准确再现导致此问题的原因,但我遇到过很多次这样的问题,特别是在隐藏的urls.py导入错误中表现出来。

尝试一个好的旧find . -name "*.pyc" | xargs rm

像往常一样,对rm命令要非常小心 - 永远不要相信它,三重检查你写了* .pyc或者备份/版本控制。