本文共 2174 字,大约阅读时间需要 7 分钟。
接手项目是Django写的,又开始正式学习Django,一般用python manage.py runserver,运行项目都没问题。
看文档说django-admin runserver 同样也能启动项目
开发环境:
mac os10.14
python2.7
django1.8
但是试了一下报错:
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_SETTINGS_MODULE这个环境变量,变量的值就是"项目名称.settings",我的项目就是mysite,对应的的值就是:mysite.settings
设置环境变量方法:
1、可以设置临时生效的,直接在终端执行命令:
export DJANGO_SETTINGS_MODULE=mysite.settings
2、者直接修改bash文件配置,我用的是oh my zsh,所以我修改~/.zshrc,在文件中同样添加这句:
export DJANGO_SETTINGS_MODULE=mysite.settings
执行source ~/.zshrc,修改生效
再次执行django-admin runserver依然报错:
ImportError: No module named mysite.settings
这个错误原因是没有把项目路径添加加到python的搜索路径中,所以找不到模块。
本来在python环境中直接sys.path.append('路径')就行了,结果在shell终端中没调用python的方法,先在python环境中执行添加路径在切换到shell也不行,查查看能不能永久设置python搜索路径,果然,设置python环境变量PYTHONPATH就行了,跟设置系统环境变量PATH差不多。
再次编辑~/.zshrc,(其他bash编辑对应配置文件)
#设置环境变量
export DJANGO_SETTINGS_MODULE=mysite.settings
#设置python的搜索路径环境变量,将项目路径"/Users/wangjinyu/PycharmProjects/mysite"添加到python的搜索路径
export PYTHONPATH=$PYTHONPATH:/Users/wangjinyu/PycharmProjects/mysite,
执行source ~/.zshrc,修改生效
另一种永久添加python搜索路径的方法,配置.pth文件,亲测也有效
再次执行django-admin runserver项目终于跑起来了!
再回顾文档。
django-admin
is Django’s command-line utility for administrative tasks. This document outlines all it can do.In addition,
manage.py
is automatically created in each Django project. It does the same thing asdjango-admin,
but also sets the environment variable so that it points to your project’ssettings.py
file.
django-admin
和 manage.py都做一样的事,只不过manage.py会设置环境变量
看一下manage.py默认代码:
#!/usr/bin/env pythonimport osimport sysif __name__ == "__main__": os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings") from django.core.management import execute_from_command_line execute_from_command_line(sys.argv)
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "demo.settings")
这句代码完成了环境变量的设置,同时python执行manage.py时,python的机制是会自动将执行的py文件所在的目录添加到python的搜索路径。manage.py的路径就是项目的根路径,所以自然能找到mysite.settings模块了
而django-admin runserver就需要手动完成设置环境变量和添加python搜索路径这两件事。
转载地址:http://ocxws.baihongyu.com/