接下來,我們并不急于安裝django,我們先安裝一個叫virtualenvwrapper的東西(它里面集合了virtualenv)這個東西可以幫我們新建,啟用,關(guān)閉虛擬環(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所依賴的功能或者修改了接口,那么,你再運(yùn)行django就悲劇了,對于新手來說,這種悲劇就像玄學(xué)一樣,前兩天django還跑地好好的,代碼啥的沒改,咋今天就不行了呢?這個例子雖然是杜撰的,但是,卻很有可能存在,而且情況可能會更復(fù)雜,所以,我們需要保證系統(tǒng)的純凈,從上面的例子我們可以看到,既然我們決定用python做django項目,就別再去搞其他的比如flask什么項目了,這樣就不會出現(xiàn)玄學(xué)問題,但是,只學(xué)django怎么行呢,大家都是孜孜不倦的好孩子,將來肯定不會滿足于django,肯定會往什么機(jī)器學(xué)習(xí),什么大數(shù)據(jù)那方面蹭一蹭,所以,我們就需要用到虛擬環(huán)境了,python剛裝好,環(huán)境那么純潔,你舍得污染嗎?這肯定不行啊,所以,我們需要復(fù)制一份python的運(yùn)行環(huán)境,這個復(fù)制的環(huán)境就叫虛擬環(huán)境,我們在這個虛擬環(huán)境里裝django,裝它依賴的包,反正隨便整,原生的python環(huán)境還是保持著純潔的心靈。這時你還想學(xué)習(xí)flask,你可以繼續(xù)復(fù)制一份原始的python環(huán)境,然后這個作為第二個虛擬環(huán)境,在里面裝flask和相關(guān)的package,這些環(huán)境之間互不干擾,哪天虛擬環(huán)境玩崩了,直接刪除就是,簡單得很,而要是原始環(huán)境玩崩了,很多人甚至都不知道怎樣才能卸載干凈,所以咱們盡量別在原生環(huán)境上整項目。
我們雖然是新手,像使用虛擬環(huán)境這樣的習(xí)慣還是要培養(yǎng)的,將來肯定受益良多,不會被各種系統(tǒng)兼容,版本混亂等破事搞得焦頭爛額。
為了安裝虛擬環(huán)境管理工具,我們只需打開cmd輸入如下的語句(注意尾巴的win不能少)
pip install virtualenvwrapper-win
實際起作用的virtualenv,它能夠復(fù)制原始環(huán)境,做這些工作,但是,這玩意用戶界面設(shè)計不好,直接用比較反人類,于是就有大神出了virtualenvwrapper將virtualenv包裝一下,使用起來更加方便(沒錯社區(qū)大神就是這么牛逼,絕不允許反人類的存在),而且,你安裝virtualenvwrapper-win,他會自動安裝vritualenv,非常省心。
這時你還不能直接使用這個工具,因為,你需要告訴這個工具,你要把虛擬環(huán)境復(fù)制到什么地方,因此,需要添加系統(tǒng)環(huán)境變量,首先,我們在D盤根目錄新建一個叫'py_env'的文件夾來存放我們的虛擬環(huán)境。
接著,找到一個’我的電腦‘的圖標(biāo),右鍵,選擇屬性

選擇高級系統(tǒng)設(shè)置

選擇環(huán)境變量

選擇新建

變量名輸入: WORKON_HOME
變量值,可以通過瀏覽目錄,選擇我們剛剛新建的py_env,確定就可以了。

新建好系統(tǒng)環(huán)境變量,一路確定,應(yīng)用。
關(guān)掉cmd,再重新開一個新的cmd,這時新添加的系統(tǒng)環(huán)境變量就可以使用了。
我們輸入(下面的jdanog_env是我為虛擬環(huán)境起的名字,你可以隨意起,不過要記住它,否則就得跑到我們之前新建的py_env目錄下看我們裝了哪些虛擬環(huán)境)
mkvirtualenv django_env

你就會看到提示說,新的python運(yùn)行器已經(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的目錄,把代碼放進(jìn)去,當(dāng)然我們要運(yùn)行該項目的代碼時,我們就要用到django_env的環(huán)境,所以需要django_env處于激活狀態(tài),這時,運(yùn)行你的代碼的編譯器是處于django_env目錄下的那個,而不是原生的編譯器,因為我們要把django相關(guān)的package裝到虛擬環(huán)境中,所以,以后如果你在原生環(huán)境下跑django項目的代碼就會出錯,因為原生環(huán)境并沒有裝django相關(guān)的package
在django_env激活的狀態(tài)下,我們輸入
pip list

你會看到這里列出來的package比之前原生環(huán)境少很多,因為在復(fù)制原生環(huán)境成虛擬環(huán)境的時候,為了讓環(huán)境更加清爽,很多package就不復(fù)制過來了,其實是在鼓勵你自己安裝需要的package(原來自帶的package版本可能和你做項目所需要的版本有沖突,又或者有些自帶package確實用不上),我們這次是做django,那么,我們首先要安裝的就是django這個package。請再次確認(rèn)django_env是激活狀態(tài),也就是,你的cmd的提示符前面有(django_env)的字樣,否則一不小心裝到原生環(huán)境里面不就翻車了么。確認(rèn)完畢,請輸入
pip install django
稍等片刻就安裝成功了,這時再
pip list

仔細(xì)看一下,比之前多了django和pytz,說明django是依賴pytz這個包的,至于依賴哪些功能,咱們就別管了。
我們的虛擬環(huán)境django_env處于激活狀態(tài),所有的python程序都是由虛擬環(huán)境的編譯器執(zhí)行的,如果我們想退出虛擬環(huán)境,只要敲入
deactivate
就可以退出虛擬環(huán)境了,這時cmd提示符前面的(django_env)消失了,我們又回到了原生環(huán)境
這時再運(yùn)行
pip list
你找不到django的,因為,我們的原生環(huán)境很純潔,并沒有安裝django,相應(yīng)地你運(yùn)行
django-admin startproject mysite
會出現(xiàn)錯誤。
假設(shè),你現(xiàn)在對學(xué)習(xí)django失去了興趣,想學(xué)flask,所以,首先要為flask新建一個虛擬環(huán)境,那么你可以運(yù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教程那樣詳細(xì)講解如何搭建環(huán)境和虛擬環(huán)境,于是,你從門外到放棄,敲入
deactivate
退出flask_env環(huán)境,想要再回到django的懷抱,敲入
workon django_env
表示work on the django我們就又進(jìn)入django_env的虛擬環(huán)境了,一切都是那么親切,等等,先
deactivate
回到原生環(huán)境,我們要掩蓋剛剛?cè)腌姺艞塮lask的尷尬,敲入
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)境差不多就搭好了。啰嗦講了很多,但是,作為新手,我深刻體會到,新手學(xué)編程,最怕的就是搭環(huán)境。