博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Django启动项目命令django-admin runserver 和python manage.py runserver区别小记
阅读量:4300 次
发布时间:2019-05-27

本文共 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 as django-admin,but also sets the  environment variable so that it points to your project’s settings.pyfile.

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/

你可能感兴趣的文章
原理性地理解 Java 泛型中的 extends、super 及 Kotlin 的协变、逆变
查看>>
FFmpeg 是如何实现多态的?
查看>>
FFmpeg 源码分析 - avcodec_send_packet 和 avcodec_receive_frame
查看>>
FFmpeg 新旧版本编码 API 的区别
查看>>
RecyclerView 源码深入解析——绘制流程、缓存机制、动画等
查看>>
Android 面试题整理总结(一)Java 基础
查看>>
Android 面试题整理总结(二)Java 集合
查看>>
学习笔记_vnpy实战培训day02
查看>>
学习笔记_vnpy实战培训day03
查看>>
VNPY- VnTrader基本使用
查看>>
VNPY - CTA策略模块策略开发
查看>>
VNPY - 事件引擎
查看>>
MongoDB基本语法和操作入门
查看>>
学习笔记_vnpy实战培训day04_作业
查看>>
OCO订单(委托)
查看>>
学习笔记_vnpy实战培训day05
查看>>
学习笔记_vnpy实战培训day06
查看>>
Python super钻石继承
查看>>
回测引擎代码分析流程图
查看>>
Excel 如何制作时间轴
查看>>