Skip to main content
 首页 » 编程设计

python之Django,夹层 : Autodiscover error, 引用不存在的模型

2024年11月01日39qq号

我正在处理的 Django 项目是在我处理它之前由其他人设置的。它还有我不熟悉的夹层组件;一直不需要使用它。突然,我有一个错误,我不知道如何修复...

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

随后,我决定删除模型定义和 admin.py,因为我决定创建一个单独的应用程序来处理我正在处理的特定功能。重启foreman后,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 

我搜索了我所有的来源,绝对没有在任何地方导入“横幅”。彻底清除它的正确方法是什么?

请您参考如下方法:

如果您绝对没有在任何地方导入横幅广告(搜索您的代码库应该可以确认这一点),那么您编译的 python 文件可能仍然引用旧内容。

我无法准确重现导致此问题的原因,但我遇到过很多次这样的问题,具体表现为神秘的 urls.py 导入错误。

尝试一个很好的旧 find 。 -名称“*.pyc” | xargs rm

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