我之前在localhost上运行过Django服务器,但从未遇到过这个问题。我拼命想弄清楚我做错了什么。
我在Ubuntu 12.04上使用Django 1.4和Python 2.7。
据我所知,我已经正确配置了所有内容 - 我实际上正在使用我构建的另一个功能性Django项目。
如果我运行以下命令(或其任何推荐的变体),我会收到错误。
django-admin.py runserver localhost:8000
这是错误:
ImportError: Settings cannot be imported, because environment variable DJANGO_SETTINGS_MODULE is undefined.
有人可以告诉我为什么会出现这个错误,如何修复它以及为什么它不会发生在我的其他Django项目中?!
我发现了一些关于这个问题的帖子只是通过快速的谷歌搜索,但没有一个建议的解决方案有帮助 - 我也不是真正理解它们。
答案 0 :(得分:4)
我很确定你应该跑
manage.py runserver
从项目目录中。它会自动加载您的settings.py等。
来自Django docs:
通常,在处理单个Django项目时,使用manage.py更容易。如果需要在多个Django设置文件之间切换,请将django-admin.py与DJANGO_SETTINGS_MODULE或--settings命令行选项一起使用
答案 1 :(得分:1)
提供更多代码或示例的目录结构可能有所帮助。
首先,该命令通常是manage.py runserver 8000
,所以试试这个,这可能会有所不同。
其次,在Django 1.4中,移动了settings.py
文件的位置。在以前的Django版本中,目录结构如下所示:
myproject/
settings.py
views.py
urls.py
myapp/
models.py
...
...
但是,在Django 1.4中,主项目设置和文件被移动到另一个目录:
myproject/
myproject/
settings.py
views.py
urls.py
myapp/
models.py
urls.py
...
...
因此,如果您使用的是Django 1.4,但是在使用之前的示例时,您的settings.py
可能位于错误的位置。另外,我发现在运行django-admin.py startproject
时,它有时会错误地创建两个 settings.py
文件,一次在旧位置,另一个在新位置,这可能会让人感到困惑您。 manage.py
唯一注意的是项目目录中的那个。
如果事实证明您的settings.py
位置错误但您不想移动它,正如您的错误所示,您可以设置一个名为DJANGO_SETTINGS_MODULE
的环境变量作为路径您想要用于项目的Django settings.py
。我绝对不建议这样做。