Django raise ImportError(无法导入设置,因为环境变量%s未定义

Django raise ImportError(无法导入设置,因为环境变量%s未定义,django,manage.py,Django,Manage.py,关于这个错误,这里有几个问题,但没有答案对我有帮助,奇怪的是,这个错误突然被提出,而之前一切都很好 我所做的是重新启动服务器,突然发现: 为什么这个错误会突然出现,而我没有改变任何东西,我如何才能修复它 Traceback (most recent call last): File "/Library/Frameworks/Python.framework/Versions/2.7/bin/django-admin.py", line 5, in <module> man

关于这个错误,这里有几个问题,但没有答案对我有帮助,奇怪的是,这个错误突然被提出,而之前一切都很好

我所做的是重新启动服务器,突然发现:

为什么这个错误会突然出现,而我没有改变任何东西,我如何才能修复它

Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/2.7/bin/django-admin.py", line 5, in <module>
    management.execute_from_command_line()
  File "/Library/Python/2.7/site-packages/Django-1.4.5-py2.7.egg/django/core/management/__init__.py", line 443, in execute_from_command_line
    utility.execute()
  File "/Library/Python/2.7/site-packages/Django-1.4.5-py2.7.egg/django/core/management/__init__.py", line 382, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/Library/Python/2.7/site-packages/Django-1.4.5-py2.7.egg/django/core/management/__init__.py", line 261, in fetch_command
    klass = load_command_class(app_name, subcommand)
  File "/Library/Python/2.7/site-packages/Django-1.4.5-py2.7.egg/django/core/management/__init__.py", line 69, in load_command_class
    module = import_module('%s.management.commands.%s' % (app_name, name))
  File "/Library/Python/2.7/site-packages/Django-1.4.5-py2.7.egg/django/utils/importlib.py", line 35, in import_module
    __import__(name)
  File "/Library/Python/2.7/site-packages/Django-1.4.5-py2.7.egg/django/core/management/commands/runserver.py", line 8, in <module>
    from django.core.servers.basehttp import AdminMediaHandler, run, WSGIServerException, get_internal_wsgi_application
  File "/Library/Python/2.7/site-packages/Django-1.4.5-py2.7.egg/django/core/servers/basehttp.py", line 26, in <module>
    from django.views import static
  File "/Library/Python/2.7/site-packages/Django-1.4.5-py2.7.egg/django/views/static.py", line 95, in <module>
    template_translatable = ugettext_noop(u"Index of %(directory)s")
  File "/Library/Python/2.7/site-packages/Django-1.4.5-py2.7.egg/django/utils/translation/__init__.py", line 75, in gettext_noop
    return _trans.gettext_noop(message)
  File "/Library/Python/2.7/site-packages/Django-1.4.5-py2.7.egg/django/utils/translation/__init__.py", line 48, in __getattr__
    if settings.USE_I18N:
  File "/Library/Python/2.7/site-packages/Django-1.4.5-py2.7.egg/django/utils/functional.py", line 184, in inner
    self._setup()
  File "/Library/Python/2.7/site-packages/Django-1.4.5-py2.7.egg/django/conf/__init__.py", line 40, in _setup
    raise ImportError("Settings cannot be imported, because environment variable %s is undefined." % ENVIRONMENT_VARIABLE)
ImportError: Settings cannot be imported, because environment variable DJANGO_SETTINGS_MODULE is undefined.
回溯(最近一次呼叫最后一次):
文件“/Library/Frameworks/Python.framework/Versions/2.7/bin/django admin.py”,第5行,在
管理。从命令行()执行命令
文件“/Library/Python/2.7/site packages/Django-1.4.5-py2.7.egg/Django/core/management/_init____;.py”,第443行,从命令行执行
utility.execute()
文件“/Library/Python/2.7/site-packages/Django-1.4.5-py2.7.egg/Django/core/management/_-init___;.py”,执行中第382行
self.fetch_命令(子命令)。从_argv(self.argv)运行_
文件“/Library/Python/2.7/site packages/Django-1.4.5-py2.7.egg/Django/core/management/_init____;.py”,第261行,在fetch_命令中
klass=加载命令类(应用程序名称,子命令)
文件“/Library/Python/2.7/site packages/Django-1.4.5-py2.7.egg/Django/core/management/_init__.py”,第69行,在load_命令类中
模块=导入模块(“%s.management.commands.%s%”(应用程序名称,名称))
文件“/Library/Python/2.7/site packages/Django-1.4.5-py2.7.egg/Django/utils/importlib.py”,第35行,在import_模块中
__导入(名称)
文件“/Library/Python/2.7/site packages/Django-1.4.5-py2.7.egg/Django/core/management/commands/runserver.py”,第8行,在
从django.core.servers.basehttp导入AdminMediaHandler,运行WSGIServerException,获取内部wsgi应用程序
文件“/Library/Python/2.7/site packages/Django-1.4.5-py2.7.egg/Django/core/servers/basehttp.py”,第26行,在
从django.views导入静态
文件“/Library/Python/2.7/site packages/Django-1.4.5-py2.7.egg/Django/views/static.py”,第95行,在
template_translateable=ugettext_noop(u“索引%(目录)s”)
文件“/Library/Python/2.7/site packages/Django-1.4.5-py2.7.egg/Django/utils/translation/_init__.py”,第75行,在gettext_noop中
return\u trans.gettext\u noop(消息)
文件“/Library/Python/2.7/site packages/Django-1.4.5-py2.7.egg/Django/utils/translation/_init___;.py”,第48行,在__
如果设置为。请使用_I18N:
文件“/Library/Python/2.7/site packages/Django-1.4.5-py2.7.egg/Django/utils/functional.py”,内页第184行
self.\u设置()
文件“/Library/Python/2.7/site-packages/Django-1.4.5-py2.7.egg/Django/conf/_-init___;.py”,第40行,在安装程序中
raise ImportError(“无法导入设置,因为环境变量%s未定义。”%environment\u variable)
ImportError:无法导入设置,因为环境变量DJANGO_Settings_MODULE未定义。

每当打开新shell时,我都会运行此脚本:

export PYTHONPATH=$PYTHONPATH:/Users/cole/Projects/Sites/my_project.com/my_project
export DJANGO_SETTINGS_MODULE=my_project.settings
更新:我有点草率地编辑了脚本。需要做的是:

export PYTHONPATH=$PYTHONPATH:/Path/To/Project/Root/Directory
export DJANGO_SETTINGS_MODULE=my_project.settings

转到可使用manage.py的项目文件夹并运行:

python manage.py shell


运行django语句,该语句可以避免错误

检查此项:
python manage.py shell
然后
import sys
然后
sys.path
。项目目录在该路径上吗?退出。输入常规的python shell
python
。然后
import sys
sys.path
。项目目录在该路径上吗?您正在使用什么操作系统?也许您有
DJANGO_SETTINGS_MODULE
设置为重新启动时清除的环境变量。无论如何,您需要设置此变量。它通常在
manage.py
中为您处理,但有些人不得不求助于手动设置。@Cole:谢谢。项目目录只显示在python manage.py shell中,而不是在python shell中。