django独立脚本导入错误

时间:2010-08-22 14:07:36

标签: django

我有一个工作的django网站,我正在尝试在其数据上运行一个独立的脚本。我正在关注this文章,但无法让它发挥作用。我尝试了两种方法:

1)

import sys, os
sys.path.append(os.path.abspath('..'))

os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'

from mysite.main.models import Image
#from main.models import Image #should work too

2)

import sys, os
sys.path.append(os.path.abspath('..'))

from django.core.management import setup_environ 
from mysite import settings
#import settings #should work too
setup_environ(settings)

from mysite.main.models import Image

两者都给了我“AttributeError:'module'对象没有从我试图导入的模块(main.models)中引出的属性'models'。

脚本本身位于工作站点的项目根目录中,“主”应用程序已正确安装并正常工作。设置或模型应该没有问题。

3 个答案:

答案 0 :(得分:4)

我自己也遇到了一个非常类似的错误,这个来自Django shell代码(shell.py)的代码段为我做了这个:

from django.db.models.loading import get_models
loaded_models = get_models()

将它放在模型类导入之前。

答案 1 :(得分:0)

我认为您的import声明不起作用的原因没有任何理由。确保模块结构与import命令匹配。模块路径应为mysite -> main -> models。一些开发人员在项目中添加了额外的apps模块,使路径变为mysite -> apps -> main -> models。确保不是这种情况。

要检查,请从Django shell以及Python REPL。

执行以下操作
from mysite.main.models import Image

如果这不起作用,您需要对模块结构进行故障排除。

答案 2 :(得分:0)

只需克隆您的manage.py文件即可。删除最后两行,并将代码追加到最后。奇迹般有效!例如,我现在包含以下内容,它从我的一个数据库项

输出数据
#!/usr/bin/env python
import os
import sys

if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "conf.settings_dev")
  #from django.core.management import execute_from_command_line
  #execute_from_command_line(sys.argv)
  from events.models import Event
  e = Event.objects.get(id="testID")
  print e.eventTitle

我怀疑可能有更正式(和复杂)的做法,但在此期间这是一个很好的起点。