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

Posted

技术标签:

【中文标题】在 django 中导入设置时出现奇怪的错误【英文标题】:Bizarre error importing settings in django 【发布时间】:2011-08-27 13:17:43 【问题描述】:

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

django-admin.py start project x

我们在 cvs 中使用 svn,但在某些时候,当我尝试这样的事情时,对我来说没有任何理由:

python manage.py runserver

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

有什么想法吗?

我收到了这个错误:

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

但很明显,设置文件存在并且与 manage.py 文件位于同一文件夹中,并且不适用于我...

django and appengine 也会发生这种情况

【问题讨论】:

“python settings.py”是什么意思? 什么都没有,也没有从 python 交互导入设置。 奇怪...也许以详细模式(-v)运行python可以帮助你 听起来你偶尔会忘记激活 virtualenv。 Daniel,nop,我很确定我激活了 virtualenv,事实上,我使用的是 virtalenvwrapper,所以,我做'workon' 【参考方案1】:

我收到了这个错误:

错误:在包含“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 时打印的堆栈跟踪。

【讨论】:

【参考方案2】:

如果您在尝试开始使用 django 和 appengine 时遇到此错误,同时遵循 http://www.allbuttonspressed.com/projects/djangoappengine 的指南

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

不是:

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

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

已修复:

将以下文件夹复制到您的项目中(例如,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

注意最后一行。

【讨论】:

我在关注blog.abhijeetr.com/2013/02/… 教程,同样的事情,现在又出现了另一个错误:TypeError: __init__() 只需要 1 个参数(给定 2 个) 问题解决了,让 django + gae 运行的一个好方法是使用这个脚本seperohacker.blogspot.com/2012/05/…【参考方案3】:

我通过 django 代码搜索了一个小时,直到我遇到了这个:

manage.py [command] --traceback

原来在我的应用程序深处存在导入错误。一旦我看到错误,就花了十秒钟来修复。 :/

【讨论】:

以上是关于在 django 中导入设置时出现奇怪的错误的主要内容,如果未能解决你的问题,请参考以下文章

在 Maya 中导入模型时出现错误

为啥在 sagemaker 笔记本中导入 SparkContext 库时出现错误?

在 python 2.7 中导入 zipfile 模块时出现语法错误

在 MS Access 中导入电子表格数据时出现错误消息

在 Angular 6 中导入“ngx-bootstrap/datepicker”模块时出现错误

在 Jython 的 Pig UDF 中导入外部库时出现错误 1121