在 py manage.py shell 或者 py manage.py makemigrations 时会出现这个错误
django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
原因是django启动时找不到配置文件
解决方法是在shell中设置环境变量 DJANGO_SETTINGS_MODULE
如下:
export DJANGO_SETTINGS_MODULE=”[PROJECT].settings”
其中[PROJECT]是django项目的名字
[PROJECT].settings 对应着 工程中的 [PROJECT]/[PROJECT]/settings.py文件
这个问题就解决了! 可以不看后面的了.
另外可以使用autoenv来自动配置这个环境变量.
autoenv的原理是在cd 一个文件夹时执行这个文件夹中的.env脚本文件
autoenv安装方法:
$ git clone git://github.com/kennethreitz/autoenv.git ~/.autoenv
$ echo 'source ~/.autoenv/activate.sh' >> ~/.bashrc
安装好后在自己的工程下写一个.env文件:
projectname=$(basename $PWD)
export DJANGO_SETTINGS_MODULE="$projectname.settings"
以后cd进入工程目录时会自动设置. 创建新的工程后把这个文件拷贝过去就行了.
参考文章:https://www.reddit.com/r/django/comments/2d85a4/django_settings_module_is_undefined/