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"
我的<project>
位于/absolute/path/to/django/project/folder/<project>
。我将 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 1.5 - 使用新的 StreamingHttpResponse