接下來锰茉,我們并不急于安裝django,我們先安裝一個叫virtualenvwrapper的東西(它里面集合了virtualenv)這個東西可以幫我們新建恕曲,啟用鹏氧,關閉虛擬環(huán)境,我們已經(jīng)安裝好了python佩谣,如果直接就安裝各種package把还,可能會造成系統(tǒng)混亂,因為package之間會有依賴的稿存,我杜撰一個比方笨篷,你現(xiàn)在直接裝django,他會依賴其他的包(開發(fā)django的人也不會總想著重新造輪子瓣履,有些功能既然別人寫好了率翅,拿來用就是了),比如pytz這個包(你裝django的時候如果你的系統(tǒng)沒有安裝pytz袖迎,他會自動幫你裝上的)冕臭,django依賴的是pytz的這個2017.2版本的某個功能,然后假如某一天燕锥,你要做別的項目辜贵,比如flask,假如它依賴的是pytz2017.3(我隨口編的归形,不存在這個版本的pytz包)那么你安裝flask的時候就會將pytz自動升級為pytz2017.3.而這個新版本的pytz可能取消了django所依賴的功能或者修改了接口托慨,那么,你再運行django就悲劇了暇榴,對于新手來說厚棵,這種悲劇就像玄學一樣,前兩天django還跑地好好的蔼紧,代碼啥的沒改婆硬,咋今天就不行了呢?這個例子雖然是杜撰的奸例,但是彬犯,卻很有可能存在,而且情況可能會更復雜,所以谐区,我們需要保證系統(tǒng)的純凈湖蜕,從上面的例子我們可以看到,既然我們決定用python做django項目卢佣,就別再去搞其他的比如flask什么項目了重荠,這樣就不會出現(xiàn)玄學問題,但是虚茶,只學django怎么行呢,大家都是孜孜不倦的好孩子仇参,將來肯定不會滿足于django嘹叫,肯定會往什么機器學習,什么大數(shù)據(jù)那方面蹭一蹭诈乒,所以罩扇,我們就需要用到虛擬環(huán)境了,python剛裝好怕磨,環(huán)境那么純潔喂饥,你舍得污染嗎?這肯定不行啊肠鲫,所以员帮,我們需要復制一份python的運行環(huán)境,這個復制的環(huán)境就叫虛擬環(huán)境导饲,我們在這個虛擬環(huán)境里裝django捞高,裝它依賴的包,反正隨便整渣锦,原生的python環(huán)境還是保持著純潔的心靈硝岗。這時你還想學習flask,你可以繼續(xù)復制一份原始的python環(huán)境袋毙,然后這個作為第二個虛擬環(huán)境型檀,在里面裝flask和相關的package,這些環(huán)境之間互不干擾听盖,哪天虛擬環(huán)境玩崩了胀溺,直接刪除就是,簡單得很媳溺,而要是原始環(huán)境玩崩了月幌,很多人甚至都不知道怎樣才能卸載干凈,所以咱們盡量別在原生環(huán)境上整項目悬蔽。
我們雖然是新手扯躺,像使用虛擬環(huán)境這樣的習慣還是要培養(yǎng)的,將來肯定受益良多,不會被各種系統(tǒng)兼容录语,版本混亂等破事搞得焦頭爛額倍啥。
為了安裝虛擬環(huán)境管理工具,我們只需打開cmd輸入如下的語句(注意尾巴的win不能少)
pip install virtualenvwrapper-win
實際起作用的virtualenv澎埠,它能夠復制原始環(huán)境虽缕,做這些工作,但是蒲稳,這玩意用戶界面設計不好氮趋,直接用比較反人類,于是就有大神出了virtualenvwrapper將virtualenv包裝一下江耀,使用起來更加方便(沒錯社區(qū)大神就是這么牛逼剩胁,絕不允許反人類的存在),而且祥国,你安裝virtualenvwrapper-win昵观,他會自動安裝vritualenv,非常省心舌稀。
這時你還不能直接使用這個工具啊犬,因為,你需要告訴這個工具壁查,你要把虛擬環(huán)境復制到什么地方觉至,因此,需要添加系統(tǒng)環(huán)境變量潮罪,首先康谆,我們在D盤根目錄新建一個叫'py_env'的文件夾來存放我們的虛擬環(huán)境。
接著嫉到,找到一個’我的電腦‘的圖標沃暗,右鍵,選擇屬性
選擇高級系統(tǒng)設置
選擇環(huán)境變量
選擇新建
變量名輸入: WORKON_HOME
變量值何恶,可以通過瀏覽目錄孽锥,選擇我們剛剛新建的py_env,確定就可以了细层。
新建好系統(tǒng)環(huán)境變量惜辑,一路確定,應用疫赎。
關掉cmd盛撑,再重新開一個新的cmd,這時新添加的系統(tǒng)環(huán)境變量就可以使用了捧搞。
我們輸入(下面的jdanog_env是我為虛擬環(huán)境起的名字抵卫,你可以隨意起狮荔,不過要記住它,否則就得跑到我們之前新建的py_env目錄下看我們裝了哪些虛擬環(huán)境)
mkvirtualenv django_env
你就會看到提示說介粘,新的python運行器已經(jīng)存到py_env下的django_env目錄了殖氏。
這時你可以看到cmd目錄的前面多了一個(django_env),
說明我們正在使用django_env虛擬環(huán)境(或者說姻采,django_env已激活)雅采,這里為了幫助新手理解虛擬環(huán)境,我多說幾句慨亲,所謂虛擬環(huán)境婚瓜,并不是要我們把所需要的資源都放到django_env的目錄下,實際上刑棵,這個目錄里面的東西跟C:/programs files/python35/(你python的安裝目錄)差不多闰渔,你的代碼可以放在任何地方(一般來說,也沒人會把代碼放到C:/programs files/python35/里面铐望,同理,我們的django項目代碼一般也不會放到django_env目錄下面茂附,而是任意一個地方正蛙,比如,我在D盤营曼,新建一個python_project的目錄乒验,把代碼放進去,當然我們要運行該項目的代碼時蒂阱,我們就要用到django_env的環(huán)境锻全,所以需要django_env處于激活狀態(tài),這時录煤,運行你的代碼的編譯器是處于django_env目錄下的那個鳄厌,而不是原生的編譯器,因為我們要把django相關的package裝到虛擬環(huán)境中妈踊,所以了嚎,以后如果你在原生環(huán)境下跑django項目的代碼就會出錯,因為原生環(huán)境并沒有裝django相關的package
在django_env激活的狀態(tài)下廊营,我們輸入
pip list
你會看到這里列出來的package比之前原生環(huán)境少很多歪泳,因為在復制原生環(huán)境成虛擬環(huán)境的時候,為了讓環(huán)境更加清爽露筒,很多package就不復制過來了呐伞,其實是在鼓勵你自己安裝需要的package(原來自帶的package版本可能和你做項目所需要的版本有沖突,又或者有些自帶package確實用不上)慎式,我們這次是做django伶氢,那么趟径,我們首先要安裝的就是django這個package。請再次確認django_env是激活狀態(tài)鞍历,也就是舵抹,你的cmd的提示符前面有(django_env)的字樣,否則一不小心裝到原生環(huán)境里面不就翻車了么劣砍。確認完畢惧蛹,請輸入
pip install django
稍等片刻就安裝成功了,這時再
pip list
仔細看一下刑枝,比之前多了django和pytz香嗓,說明django是依賴pytz這個包的,至于依賴哪些功能装畅,咱們就別管了靠娱。
我們的虛擬環(huán)境django_env處于激活狀態(tài),所有的python程序都是由虛擬環(huán)境的編譯器執(zhí)行的掠兄,如果我們想退出虛擬環(huán)境像云,只要敲入
deactivate
就可以退出虛擬環(huán)境了,這時cmd提示符前面的(django_env)消失了蚂夕,我們又回到了原生環(huán)境
這時再運行
pip list
你找不到django的迅诬,因為,我們的原生環(huán)境很純潔婿牍,并沒有安裝django侈贷,相應地你運行
django-admin startproject mysite
會出現(xiàn)錯誤。
假設等脂,你現(xiàn)在對學習django失去了興趣俏蛮,想學flask,所以上遥,首先要為flask新建一個虛擬環(huán)境搏屑,那么你可以運行
mkvirtualenv flask_env (注這個flask_env是我隨便起的,你也可以隨便起露该,但是你要記住這個名字睬棚,否則要到py_env看有哪些虛擬環(huán)境)
來創(chuàng)建新的虛擬環(huán)境,創(chuàng)建后自動激活解幼,這時抑党,你可以安裝flask。假如它依賴pytz的其他版本撵摆,那就裝其他版本底靠,和我們之前裝在django_env的pytz互不干涉。然后你發(fā)現(xiàn)flask沒人像我寫django教程那樣詳細講解如何搭建環(huán)境和虛擬環(huán)境特铝,于是暑中,你從門外到放棄壹瘟,敲入
deactivate
退出flask_env環(huán)境,想要再回到django的懷抱鳄逾,敲入
workon django_env
表示work on the django我們就又進入django_env的虛擬環(huán)境了稻轨,一切都是那么親切,等等雕凹,先
deactivate
回到原生環(huán)境殴俱,我們要掩蓋剛剛三秒鐘放棄flask的尷尬,敲入
rmvirtualenv flask_env
表示remove virtual environment枚抵,刪除該虛擬環(huán)境(為什么要退回到原生環(huán)境才能刪除flask_env呢线欲,因為,搞這些事情的是virtualenvwrapper汽摹,而這東西是安裝在原生環(huán)境上的李丰,所以要在原生環(huán)境上做這些事情,比如創(chuàng)建虛擬環(huán)境逼泣,刪除虛擬環(huán)境趴泌,激活虛擬環(huán)境等,你在虛擬環(huán)境上做這些是無效的拉庶,因為虛擬環(huán)境并沒有安裝virtualenvwrapper的包踱讨,也不建議你在虛擬 環(huán)境里再搞這套了,咱們不玩俄羅斯套娃)砍的,最后,一切都是神不知鬼不覺莺治,其他的一切都沒有受到影響廓鞠。虛擬環(huán)境的管理真的太方便了,這道理這社會上是行不通的谣旁,俗話說要想人不知除非己莫為床佳,偷吃想抹嘴哪有像刪除虛擬環(huán)境那樣簡單干凈,遲早會露餡的榄审。
現(xiàn)在砌们,美滋滋地,放心地搁进,敲入
workon django_env
繼續(xù)我們的項目吧浪感。
自此,我們的開發(fā)環(huán)境差不多就搭好了饼问。啰嗦講了很多影兽,但是,作為新手莱革,我深刻體會到峻堰,新手學編程讹开,最怕的就是搭環(huán)境。