在django中导入设置的奇怪错误

时间:2011-05-17 20:19:40

标签: python django settings importerror django-settings

我有许多项目在ubuntu中使用python2.7和virtualenv / virtualenvwrapper,在我的工作中,一些开发人员使用macosx和windows,通常我像往常一样创建项目:

django-admin.py start project x

我们将svn用于cvs,但在某些时候,对我来说没有任何理性,当我尝试类似的东西时:

python manage.py runserver

不起作用,但仅适用于我,并且在我的笔记本电脑中,在制作服务器或其他开发人员中不会发生。

任何想法?

我收到了这个错误:

  

错误:在包含的目录中找不到文件'settings.py'   'manage.py'。看来你已经定制了东西。你必须跑   django-admin.py,传递你的设置模块。 (如果是文件   settings.py确实存在,它以某种方式导致ImportError。)

但显然,设置文件存在且位于manage.py文件的同一文件夹中,并不适合我......

django and appengine

也会发生这种情况

2 个答案:

答案 0 :(得分:28)

  

我收到了这个错误:

     

错误:在包含'manage.py'的目录中找不到文件'settings.py'。看来你已经定制了东西。您必须运行django-admin.py,并将其传递给您的设置模块。 (如果文件settings.py确实存在,则会以某种方式导致ImportError。)

manage.py脚本会在发生导入错误时打印该警告,因此如果您的settings.py模块导入内容并且导致导致导入错误,manage.py将仍然打印出警告。

诊断的一种方法是(暂时)从

更改manage.py
#!/usr/bin/env python
from django.core.management import execute_manager
try:
    import settings # Assumed to be in the same directory.
except ImportError:
    import sys
    sys.stderr.write("Error: Can't find the file 'settings.py' in the directory containing %r. It appears you've customized things.\nYou'll have to run django-admin.py, passing it your settings module.\n(If the file settings.py does indeed exist, it's causing an ImportError somehow.)\n" % __file__)
    sys.exit(1)

if __name__ == "__main__":
    execute_manager(settings)

#!/usr/bin/env python
from django.core.management import execute_manager
import settings # Assumed to be in the same directory.

if __name__ == "__main__":
    execute_manager(settings)

并查看运行$ python manage.py runserver时打印的堆栈跟踪。

答案 1 :(得分:3)

如果您在尝试开始使用django和appengine时遇到此错误,请按照http://www.allbuttonspressed.com/projects/djangoappengine上的指南进行操作

并且您创建了符号链接到文件夹,在创建djangoappengine符号链接时指南是错误的。你需要去1个目录,例如

NOT:

将以下文件夹复制到您的项目中(例如,django-testapp):

django-nonrel/django => <project>/django
djangotoolbox/djangotoolbox => <project>/djangotoolbox
django-autoload/autoload => <project>/autoload
django-dbindexer/dbindexer => <project>/dbindexer
djangoappengine => <project>/djangoappengine

FIXED:

将以下文件夹复制到您的项目中(例如,django-testapp):

django-nonrel/django => <project>/django
djangotoolbox/djangotoolbox => <project>/djangotoolbox
django-autoload/autoload => <project>/autoload
django-dbindexer/dbindexer => <project>/dbindexer
djangoappengine/djangoappengine => <project>/djangoappengine

注意最后一行。