我正在研究的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
我搜索了我的所有来源,绝对不是我在任何地方导入'横幅'。什么是完全清除它的正确方法?
答案 0 :(得分:2)
如果你绝对不在任何地方导入横幅(搜索你的代码库应该确认这一点),那么你可能已经编译了仍然引用旧东西的python文件。
我无法准确再现导致此问题的原因,但我遇到过很多次这样的问题,特别是在隐藏的urls.py导入错误中表现出来。
尝试一个好的旧find . -name "*.pyc" | xargs rm
像往常一样,对rm
命令要非常小心 - 永远不要相信它,三重检查你写了* .pyc或者备份/版本控制。