2014-02-18 4 views
2

Проект 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 

Я искал все мой источник, безусловно, я не импортировать «баннеры» в любом месте. Каков правильный способ полностью очистить его?

ответ

2

Если вы определенно не импортируете баннеры в любом месте (поиск по вашей кодовой базе должен подтвердить это), то вы можете скомпилировать файлы python, все еще ссылающиеся на старые вещи.

Я не могу воспроизвести точно, что вызывает это, но я столкнулся с такими проблемами много раз, особенно проявляясь в загадочных ошибках импорта urls.py.

Попробуйте старый добрый find . -name "*.pyc" | xargs rm

Как обычно, быть очень осторожным с rm команды - никогда не доверять ему, тройной чек вы написали * .pyc или иметь резервные копии/контроля версий.

+0

Aha, поэтому мы удаляем все скомпилированные файлы python из папки проекта, чтобы удалить любые остаточные ссылки. Исправлено, спасибо! – pete