Django新手教程2,搭建虚拟环境

接下来,我们并不急于安装django,我们先安装一个叫virtualenvwrapper的东西(它里面集合了virtualenv)这个东西可以帮我们新建,启用,关闭虚拟环境,我们已经安装好了python,如果直接就安装各种package,可能会造成系统混乱,因为package之间会有依赖的,我杜撰一个比方,你现在直接装django,他会依赖其他的包(开发django的人也不会总想着重新造轮子,有些功能既然别人写好了,拿来用就是了),比如pytz这个包(你装django的时候如果你的系统没有安装pytz,他会自动帮你装上的),django依赖的是pytz的这个2017.2版本的某个功能,然后假如某一天,你要做别的项目,比如flask,假如它依赖的是pytz2017.3(我随口编的,不存在这个版本的pytz包)那么你安装flask的时候就会将pytz自动升级为pytz2017.3.而这个新版本的pytz可能取消了django所依赖的功能或者修改了接口,那么,你再运行django就悲剧了,对于新手来说,这种悲剧就像玄学一样,前两天django还跑地好好的,代码啥的没改,咋今天就不行了呢?这个例子虽然是杜撰的,但是,却很有可能存在,而且情况可能会更复杂,所以,我们需要保证系统的纯净,从上面的例子我们可以看到,既然我们决定用python做django项目,就别再去搞其他的比如flask什么项目了,这样就不会出现玄学问题,但是,只学django怎么行呢,大家都是孜孜不倦的好孩子,将来肯定不会满足于django,肯定会往什么机器学习,什么大数据那方面蹭一蹭,所以,我们就需要用到虚拟环境了,python刚装好,环境那么纯洁,你舍得污染吗?这肯定不行啊,所以,我们需要复制一份python的运行环境,这个复制的环境就叫虚拟环境,我们在这个虚拟环境里装django,装它依赖的包,反正随便整,原生的python环境还是保持着纯洁的心灵。这时你还想学习flask,你可以继续复制一份原始的python环境,然后这个作为第二个虚拟环境,在里面装flask和相关的package,这些环境之间互不干扰,哪天虚拟环境玩崩了,直接删除就是,简单得很,而要是原始环境玩崩了,很多人甚至都不知道怎样才能卸载干净,所以咱们尽量别在原生环境上整项目。
我们虽然是新手,像使用虚拟环境这样的习惯还是要培养的,将来肯定受益良多,不会被各种系统兼容,版本混乱等破事搞得焦头烂额。
为了安装虚拟环境管理工具,我们只需打开cmd输入如下的语句(注意尾巴的win不能少)
pip install virtualenvwrapper-win
实际起作用的virtualenv,它能够复制原始环境,做这些工作,但是,这玩意用户界面设计不好,直接用比较反人类,于是就有大神出了virtualenvwrapper将virtualenv包装一下,使用起来更加方便(没错社区大神就是这么牛逼,绝不允许反人类的存在),而且,你安装virtualenvwrapper-win,他会自动安装vritualenv,非常省心。
这时你还不能直接使用这个工具,因为,你需要告诉这个工具,你要把虚拟环境复制到什么地方,因此,需要添加系统环境变量,首先,我们在D盘根目录新建一个叫'py_env'的文件夹来存放我们的虚拟环境。
接着,找到一个’我的电脑‘的图标,右键,选择属性

选择高级系统设置


选择环境变量


选择新建


变量名输入: WORKON_HOME
变量值,可以通过浏览目录,选择我们刚刚新建的py_env,确定就可以了。


新建好系统环境变量,一路确定,应用。
关掉cmd,再重新开一个新的cmd,这时新添加的系统环境变量就可以使用了。
我们输入(下面的jdanog_env是我为虚拟环境起的名字,你可以随意起,不过要记住它,否则就得跑到我们之前新建的py_env目录下看我们装了哪些虚拟环境)
mkvirtualenv django_env

你就会看到提示说,新的python运行器已经存到py_env下的django_env目录了。
这时你可以看到cmd目录的前面多了一个(django_env),


说明我们正在使用django_env虚拟环境(或者说,django_env已激活),这里为了帮助新手理解虚拟环境,我多说几句,所谓虚拟环境,并不是要我们把所需要的资源都放到django_env的目录下,实际上,这个目录里面的东西跟C:/programs files/python35/(你python的安装目录)差不多,你的代码可以放在任何地方(一般来说,也没人会把代码放到C:/programs files/python35/里面,同理,我们的django项目代码一般也不会放到django_env目录下面,而是任意一个地方,比如,我在D盘,新建一个python_project的目录,把代码放进去,当然我们要运行该项目的代码时,我们就要用到django_env的环境,所以需要django_env处于激活状态,这时,运行你的代码的编译器是处于django_env目录下的那个,而不是原生的编译器,因为我们要把django相关的package装到虚拟环境中,所以,以后如果你在原生环境下跑django项目的代码就会出错,因为原生环境并没有装django相关的package
在django_env激活的状态下,我们输入
pip list

你会看到这里列出来的package比之前原生环境少很多,因为在复制原生环境成虚拟环境的时候,为了让环境更加清爽,很多package就不复制过来了,其实是在鼓励你自己安装需要的package(原来自带的package版本可能和你做项目所需要的版本有冲突,又或者有些自带package确实用不上),我们这次是做django,那么,我们首先要安装的就是django这个package。请再次确认django_env是激活状态,也就是,你的cmd的提示符前面有(django_env)的字样,否则一不小心装到原生环境里面不就翻车了么。确认完毕,请输入
pip install django
稍等片刻就安装成功了,这时再
pip list

仔细看一下,比之前多了django和pytz,说明django是依赖pytz这个包的,至于依赖哪些功能,咱们就别管了。
我们的虚拟环境django_env处于激活状态,所有的python程序都是由虚拟环境的编译器执行的,如果我们想退出虚拟环境,只要敲入
deactivate
就可以退出虚拟环境了,这时cmd提示符前面的(django_env)消失了,我们又回到了原生环境
这时再运行
pip list
你找不到django的,因为,我们的原生环境很纯洁,并没有安装django,相应地你运行
django-admin startproject mysite
会出现错误。
假设,你现在对学习django失去了兴趣,想学flask,所以,首先要为flask新建一个虚拟环境,那么你可以运行
mkvirtualenv flask_env (注这个flask_env是我随便起的,你也可以随便起,但是你要记住这个名字,否则要到py_env看有哪些虚拟环境)
来创建新的虚拟环境,创建后自动激活,这时,你可以安装flask。假如它依赖pytz的其他版本,那就装其他版本,和我们之前装在django_env的pytz互不干涉。然后你发现flask没人像我写django教程那样详细讲解如何搭建环境和虚拟环境,于是,你从门外到放弃,敲入
deactivate
退出flask_env环境,想要再回到django的怀抱,敲入
workon django_env
表示work on the django我们就又进入django_env的虚拟环境了,一切都是那么亲切,等等,先
deactivate
回到原生环境,我们要掩盖刚刚三秒钟放弃flask的尴尬,敲入
rmvirtualenv flask_env
表示remove virtual environment,删除该虚拟环境(为什么要退回到原生环境才能删除flask_env呢,因为,搞这些事情的是virtualenvwrapper,而这东西是安装在原生环境上的,所以要在原生环境上做这些事情,比如创建虚拟环境,删除虚拟环境,激活虚拟环境等,你在虚拟环境上做这些是无效的,因为虚拟环境并没有安装virtualenvwrapper的包,也不建议你在虚拟 环境里再搞这套了,咱们不玩俄罗斯套娃),最后,一切都是神不知鬼不觉,其他的一切都没有受到影响。虚拟环境的管理真的太方便了,这道理这社会上是行不通的,俗话说要想人不知除非己莫为,偷吃想抹嘴哪有像删除虚拟环境那样简单干净,迟早会露馅的。
现在,美滋滋地,放心地,敲入
workon django_env
继续我们的项目吧。

自此,我们的开发环境差不多就搭好了。啰嗦讲了很多,但是,作为新手,我深刻体会到,新手学编程,最怕的就是搭环境。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,042评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 89,996评论 2 384
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,674评论 0 345
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,340评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,404评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,749评论 1 289
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,902评论 3 405
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,662评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,110评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,451评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,577评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,258评论 4 328
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,848评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,726评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,952评论 1 264
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,271评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,452评论 2 348

推荐阅读更多精彩内容