有人可以帮助澄清我对syncdb和import循环的困惑吗,'你必须明确进口吗?'

时间:2010-01-22 22:01:51

标签: python django django-syncdb

我一直很难在Python2.5上使用syncdb构建数据库。 我认为这个问题的一部分是因为使用了通配符*来导入forum.models,它似乎正在创建一个循环。

>>> import settings  
>>> from forum.managers import QuestionManager, TagManager, AnswerManager, VoteManager, FlaggedItemManager, ReputeManager, AwardManager  
Traceback (most recent call last):  
  File "<console>", line 1, in <module>  
  File "/home/username/webapps/username/sousvide_app/forum/managers.py", line 6, in <module>  
    from forum.models import *  
  File "/home/username/webapps/username/sousvide_app/forum/models.py", line 18, in <module>  
    from forum.managers import QuestionManager, TagManager, AnswerManager, VoteManager, FlaggedItemManager, ReputeManager, AwardManager  
ImportError: cannot import name QuestionManager  
>>> from forum.models import Question, Tag  
>>> from forum.managers import QuestionManager, TagManager, AnswerManager, VoteManager, FlaggedItemManager, ReputeManager, AwardManager  
>>> import sys, pprint  
>>> pprint.pprint(sys.path)  
['/home/username/webapps/username/sousvide_app',  
 '/home/username/webapps/username/lib/python2.5',  
 '/home/username/lib/python2.5/markdown2-1.0.1.16-py2.5.egg',  
 '/home/username/lib/python2.5/html5lib-0.11.1-py2.5.egg',  
 '/home/username/lib/python2.5',  
 '/usr/local/lib/python25.zip',  
 '/usr/local/lib/python2.5',  
 '/usr/local/lib/python2.5/plat-linux2',  
 '/usr/local/lib/python2.5/lib-tk',  
 '/usr/local/lib/python2.5/lib-dynload',  
 '/usr/local/lib/python2.5/site-packages',  
 '/usr/local/lib/python2.5/site-packages/PIL']  
>>> from settings import INSTALLED_APPS  
>>> pprint.pprint(INSTALLED_APPS)  
('sousvide_app.forum',  
 'django.contrib.auth',  
 'django.contrib.contenttypes',  
 'django.contrib.sessions',  
 'django.contrib.sites',  
 'django.contrib.admin',  
 'django.contrib.humanize',  
 'django_authopenid')  

我在另一个安装上遇到了同样的问题,我可以通过显式从forum.managers导入管理器来解决这个问题。
如您所见,如果我将问题和标记模型加载到命名空间中,我可以导入shell中的管理器。

我发了一个来自forum.models import * explicit:
来自forum.models导入问题,标记

但是,我仍然无法syncdb。当我尝试输出SQL时,无法找到APP $ python2.5 manage.py sql forum
错误:无法找到带有标签论坛的应用。您确定您的INSTALLED_APPS设置是否正确?

有谁能让我知道出了什么问题? Python2.5有什么可能导致这个错误吗?

1 个答案:

答案 0 :(得分:0)

除了global_settings.py之外,您是否正好使用local_settings.pysettings.py

导入Django设置的正确方法是使用解耦对象from django.conf import settings,而不是import settings。请在此处查看相关文档页面:Using settings in Python code

我无法确定这是否是您问题的解决方法,但如果您说问题是{{1}中没有显示的应用,那么这是确保您的设置正确加载的正确方向的一步}。