Django 1.5b1:执行 django-admin.py 导致“No module named settings”错误

Posted

技术标签:

【中文标题】Django 1.5b1:执行 django-admin.py 导致“No module named settings”错误【英文标题】:Django 1.5b1: executing django-admin.py causes "No module named settings" error 【发布时间】:2012-11-26 09:08:06 【问题描述】:

我最近安装了 Django-1.5b1。 我的系统配置:

OSX 10.8 Python 2.7.1 虚拟环境 1.7.2

当我调用 django-admin.py 命令时,我收到以下错误

(devel)ninja Django-1.5b1: django-admin.py 
Usage: django-admin.py subcommand [options] [args]

Options:
  -v VERBOSITY, --verbosity=VERBOSITY
                        Verbosity level; 0=minimal output, 1=normal output,
                        2=verbose output, 3=very verbose output
  --settings=SETTINGS   The Python path to a settings module, e.g.
                        "myproject.settings.main". If this isn't provided, the
                        DJANGO_SETTINGS_MODULE environment variable will be
                        used.
  --pythonpath=PYTHONPATH
                        A directory to add to the Python path, e.g.
                        "/home/djangoprojects/myproject".
  --traceback           Print traceback on exception
  --version             show program's version number and exit
  -h, --help            show this help message and exit
Traceback (most recent call last):
  File "/Users/sultan/.virtualenvs/devel/bin/django-admin.py", line 5, in <module>
    management.execute_from_command_line()
  File "/Users/sultan/.virtualenvs/devel/lib/python2.7/site-packages/django/core/management/__init__.py", line 452, in execute_from_command_line
    utility.execute()
  File "/Users/sultan/.virtualenvs/devel/lib/python2.7/site-packages/django/core/management/__init__.py", line 375, in execute
    sys.stdout.write(self.main_help_text() + '\n')
  File "/Users/sultan/.virtualenvs/devel/lib/python2.7/site-packages/django/core/management/__init__.py", line 241, in main_help_text
    for name, app in six.iteritems(get_commands()):
  File "/Users/sultan/.virtualenvs/devel/lib/python2.7/site-packages/django/core/management/__init__.py", line 108, in get_commands
    apps = settings.INSTALLED_APPS
  File "/Users/sultan/.virtualenvs/devel/lib/python2.7/site-packages/django/conf/__init__.py", line 52, in __getattr__
    self._setup(name)
  File "/Users/sultan/.virtualenvs/devel/lib/python2.7/site-packages/django/conf/__init__.py", line 47, in _setup
    self._wrapped = Settings(settings_module)
  File "/Users/sultan/.virtualenvs/devel/lib/python2.7/site-packages/django/conf/__init__.py", line 132, in __init__
    raise ImportError("Could not import settings '%s' (Is it on sys.path?): %s" % (self.SETTINGS_MODULE, e))
ImportError: Could not import settings 'settings' (Is it on sys.path?): No module named settings

有没有人有同样的错误?任何人都可以提供建议或帮助吗?

谢谢,

苏丹

【问题讨论】:

我尝试安装 Django 1.4.2 和 Django 1.3.4,一切正常 【参考方案1】:

我在开始一个新项目时遇到了同样的问题。 我通过在命令提示符下给出这个命令解决了这个问题:

export DJANGO_SETTINGS_MODULE=

通过这种方式,我取消了指向“settings”文件的变量(使用env | grep DJANGO_SETTINGS_MODULE 发现)我在开始使用之前设置的virtualenv

在取消设置变量后,django-admin.py 脚本就像一个魅力!

【讨论】:

这不是最好的解决方案,你应该包括 PYTHONPATH,就像@ceolwulf 建议的答案:***.com/a/14995603/778261 谢谢@neosergio。您能否详细说明为什么它应该是最佳解决方案? Sultan 在 DJANGO_SETTINGS_MODULE 中有一个错误的值,我的建议是删除该值以便使用 virtualenv 的值。 您可以使用适当的值修改 DJANGO_SETTINGS_MODULE(尤其是当您将设置文件分开时,例如:本地或生产),如果您的 PYTHONPATH 未明确识别,您将继续遇到问题,这就是@ceolwulf 的答案修复的原因问题,还允许在环境中设置 DJANGO_SETTINGS_MODULE。 @neosergio 我同意,但是如果您修复 PYTHONPATH 并且设置了错误的 DJANGO_SETTINGS_MODULE (正如我和苏丹至少做过一次),您可能仍然会遇到问题,所以我的回答和 ceowulf 的回答是相辅相成的.如果建议是错误的,应该投反对票,如果你因为它不完整而投反对票,你也应该对所有其他建议投反对票......【参考方案2】:

我遇到了和你一样的问题,除了像这样将我的项目文件夹添加到 PYTHONPATH 之外,我还没有想出一个好的解决方法:

export PYTHONPATH="/absolute/path/to/django/project/folder:$PYTHONPATH"

我的&lt;project&gt; 位于/absolute/path/to/django/project/folder/&lt;project&gt;。我将 export 命令添加到我的 env/bin/activate 脚本的末尾,因此每次初始化 virtualenv 时都会发生。

我们两种情况的唯一区别是我使用多个设置文件而不是单个 settings.py 模块。

您也可以从包含您的 Django 项目的文件夹中调用 django-admin.py,如下所示:

python ~/.virtualenvs/devel/bin/django-admin.py <command>

以便它将您当前的工作目录识别为路径的一部分。

希望这是有道理的。解释起来有点笨拙,因此很难找到答案。

【讨论】:

【参考方案3】:

不要从 django 库的直接路径运行脚本;从任何其他路径运行它。看来你 cd 进入了安装 django 的目录(或者你下载并展开它的目录),然后从那里运行命令。

所以试试这个:

(devel)ninja Django-1.5b1: cd 
(devel)ninja: django-admin.py startproject foo

【讨论】:

【参考方案4】:

也许您的问题与此有关: Wrong python path in script header

如果你想在你的 venv 中创建一个新的 django 项目以外的任何事情,你应该调用python manage.py(当然,whereis python 应该返回你的 venv 可执行文件)

【讨论】:

【参考方案5】:

您确定要从 virtualenv django 安装启动 django-admin 吗?也许 path/to/virtualenv/bin/django-admin.py

【讨论】:

是的,我是,命令 which django-admin.py 显示 /Users/sultan/.virtualenvs/devel/bin/django-admin.py 是的,抱歉,刚刚看到。他的另一个原因是 django 不在 python 路径上。我不知道女巫 python 是在启动主系统还是虚拟环境 python。但是路径有问题....

以上是关于Django 1.5b1:执行 django-admin.py 导致“No module named settings”错误的主要内容,如果未能解决你的问题,请参考以下文章

Django 第二天 创建Django项目

Django 1.5 - 使用新的 StreamingHttpResponse

Django 1.5 - 使用新的 StreamingHttpResponse

Django 将模型转换为 sql 代码

Django网站开发—— 网站快速搭建

Django中的假管理员登录页面