轉載請註明來源地址和原作者(CFishHome)
前沿
通過網易雲課堂開設的Django搭建企業級官網的學習,特此留下學習筆記記錄學習遇到的困難和心得。這也是一個長期的學習過程,相信一個好的產品都需要耐心和鑽研。本人有個小習慣,不太喜歡直接複製粘貼別人的知識筆記,喜歡自己測試別人的筆記後再自己總結,所以有不便之處請見諒。
虛擬環境
通常情況下,我們安裝好Python3.x或者Python2.x,都會擁有對應的一個Python環境(也稱之爲系統級的Python環境,也就是有Scripts文件夾的那個目錄環境),那麼當我們需要使用第三方包時,在命令行界面執行pip install xx的方式進行安裝,這樣安裝會將那個包安裝到你的系統級別的Python環境的某個文件夾中。這樣的方式會爲以後造成什麼樣的影響呢?假如我們一直是使用Django1.10寫網站,突然領導安排我們去維護一個使用Django0.9開發的網站,但是由於Django1.10不再兼容Django0.9的一些語法了,而我們Python環境只有Django1.10,所以維護起來着實不易,也不可能同一環境同時安裝兩個版本的Django,多少會有兼容衝突問題。正所謂一山(系統級Python環境)容不得二虎(兩個版本的Django),所以我們只要額外創造兩座山(兩個虛擬環境),分別容一隻虎不就解決問題了。所以,用兩個虛擬環境分別安裝兩個不同的Django版本來適配基於不同Django版本開發出來的項目。
下小節重點介紹兩種創建虛擬環境的軟件工具,分別是virtualenv和virtualenvwrapper,前者是少用的軟件工具(存在兩點缺陷,下小節會有總結),後者是常用的軟件工具(完全解決了virtualenv的兩點缺陷,方便操作虛擬環境)。所以,強烈建議使用virtualenvwrapper來創建虛擬環境。
virtualenv軟件工具
安裝virtualenv
virtualenv是用來創建虛擬環境的軟件工具,我們可以通過pip或者pip3來安裝,如下命令:
pip install virtualenv
pip3 install virtualenv
從上面我們可以看出pip和pip3命令的不同,如果電腦只安裝一個Python版本(py2或py3),那麼執行pip install virtualenv就會智能安裝到對應這個系統級別的python環境種。但若是電腦同時安裝了兩個python版本(py2和py3),那麼就要區分pip(執行的話安裝到py2環境中)和pip3(執行的話安裝到py3環境中)命令的使用。
利用virtualenv創建虛擬環境
打開CMD,在任意目錄下執行以下命令(注意,只有安裝virtualenv成功才能執行下面的命令),就創建虛擬環境了:
virtualenv [虛擬環境的名字]
如下圖:
創建虛擬環境完成後有兩個需要我們注意的問題:
1.這個虛擬環境是採用哪個作爲它的解釋器?
我們都知道不管安裝Python3.x還是Python2.x,在系統環境變量中都會自動添加一個對應一個Python版本的Scripts文件夾路徑。而虛擬環境相當於小型的系統級別的Python環境,所以虛擬環境也需要解釋器進行編譯運行我們創建的項目。如果你當前的Python3/Scripts的查找路徑在Python2/Scripts的前面,那麼將會使用python3作爲這個虛擬環境的解釋器,否則將會使用python2作爲這個虛擬環境的解釋器。如果只有一個版本,那麼自然使用這個版本作爲虛擬環境的解釋器了
2.我們創建的虛擬環境在哪個目錄可以找到?
前面我們是在任意目錄下執行創建虛擬環境的,成功創建會生成指定名字的目錄,這個目錄就是虛擬環境,所以虛擬環境在終端當前目錄(我的是C:\Users\Administrator\Desktop)下就可以找到。如下圖所示:
進入虛擬環境
虛擬環境創建成功後,如果我們要想在這個虛擬環境中安裝第三方包、卸載第三方包或者開發項目,前提是必須先進入虛擬環境,例如:如果沒進入這個虛擬環境,然後執行pip安裝命令,那麼虛擬環境作用就失效了,因爲默認又會將第三方包安裝到系統級別的Python環境當中,這尤其需要注意!
進入虛擬環境,在不同的操作系統中有不同的方式,一般分爲兩種:
- Windows操作系統
如果你的開發平臺在Windows操作系統,首先進入到虛擬環境的Scripts文件夾,然後執行activate激活命令進入虛擬環境。如下圖所示:
- *nix操作系統
如果你的開發平臺在*nix操作系統,那麼與windows系統執行activate激活命令目錄不一樣,通過執行以下命令進入虛擬環境:
source /path/to/virtualenv/bin/activate
退出虛擬環境
既然能進入虛擬環境,自然就可以退出虛擬環境,執行下面命令就可以完成:
deactivate
創建虛擬環境同時指定Python解釋器
前面說過了,如果一臺電腦有兩個Python版本,那麼作爲虛擬環境的解釋器就會依據系統環境變量Scripts路徑的前後位置來決定,如果一臺電腦只有一個Python版本,那麼虛擬環境默認就使用這個Python解釋器。然而,實際中,依靠環境變量路徑前後順序來決定解釋器,這種限制並不靈活。所以提供了-p參數來靈活指定具體的Python解釋器:
virtualenv -p C:\Python36\python.exe [虛擬環境名稱]
對於virtualenv的小總結
- 安裝virtualenv
pip install virtualenv pip3 install virtualenv
- 創建虛擬環境
virtualenv [虛擬環境的名字] virtualenv -p C:\Python36\python.exe [虛擬環境名稱]
-
進入虛擬環境
在相應操作系統平臺下,執行activate激活命令進入虛擬環境。 - 退出虛擬環境
deactivate
評析virtualenv的缺陷
上面virtualenv軟件包有兩點缺陷:
1.每次創建虛擬環境都在終端當前目錄下創建,如果跑到多個目錄下創建虛擬環境,那麼會導致多個目錄都含有虛擬環境,那麼就變成不好管理了。 - 當進入某個虛擬環境時,都必須進入Scripts目錄下執行actiate命令才能激活虛擬環境,這十分不便捷。
virtualenvwrapper軟件工具
virtualenvwrapper這個軟件包可以讓我們管理虛擬環境變得更加簡單,完美的解決了virtualenv留下的兩個缺陷:跑到某個目錄下通過virtualenv來創建虛擬環境,並且激活的時候需要跑到具體的目錄下去激活。
安裝vritualenvwrapper
- *nix平臺下
pip install virtualenvwrapper
- windows平臺下
pip install virtualenvwrapper-win
Tips:在實際開發中,我們不需要先安裝virtualenv再安裝virtualenvwrapper
,virtualenvwrapper軟件包其實已經包含了virtualenv。所以在實際應
用中,我們只需要安裝virtualenvwrapper即可,因爲
virtualenvwraper是基於virtualenv擴展出來的。
virtualenvwrapper基本使用方法
1.創建虛擬環境
(1)在任意目錄下執行下面這條命令:
mkvirtualenv my_env
創建成功後,它會在你當前用戶(我的是C:\Users\Administrator\)路徑下創建一個Envs文件夾,然後將這個my_env虛擬環境安裝到這個目錄下,如果你電腦種安裝了python2和python3,並且兩個版本都安裝了virtualenvwrapper,那麼將會使用環境變量中第一個出現的Python版本來作爲這個虛擬環境的Python解釋器。如下圖所示:
上圖我們也可以看出,當創建成功後,默認會自動進入該虛擬環境中,我們執行deactivate命令退出當前虛擬環境。
(2)在使用 mkvirtualenv的時候,我們也還可以指定--python的參數來指定具體的 python解釋器路徑:
mkvirtualenv --python==C:\Python36\python.exe hy_env
2.切換到指定虛擬環境
workon my_env
如下圖所示:
3.退出當前虛擬環境
deactivate
4.刪除指定虛擬環境
刪除虛擬環境其實就是刪除my_env目錄。
rmvirtualenv my_env
如下圖所示:
從下圖可以看出Envs文件夾下已經不存在my_env虛擬環境了。
5.列出所有虛擬環境
lsvirtualenv
如下圖所示:
6.進入到虛擬環境所在的目錄
cdvirtualenv
由於測試需求,把my_env刪了,下圖列舉進入django-env虛擬環境爲例:
修改mkvirtualenv的默認路徑
前面學習mkvirtualenv創建虛擬環境的時候,說過它會默認在當前用戶路徑下創建一個Envs目錄,然後把虛擬環境安裝到這個Envs目錄下。那麼如何修改這個默認路徑呢?修改默認路徑的好處是什麼?仔細斟酌,假如我們自己新建一個專屬於自己的目錄,那麼把虛擬環境都放在自己創建目錄,那麼管理起來會十分方便,而且還是自己喜歡的目錄名(●'◡'●)。以下是修改默認路徑的方法:
在我的電腦->右鍵->屬性->高級系統設置->環境變量->系統變量 中添加一個參數 WORKON_HOME ,將這個
參數的值設置爲你需要的路徑。
如下圖所示:
配置好新的WORKON_HOME路徑後,然後關掉CMD窗口,重新啓動一個CMD,接着我們新創建一個虛擬環境來測試下成不成功,執行mkvirtualenv new_env命令,結果如下圖:
好了,修改默認目錄是成功的。注意,當修改了環境變量必須重啓CMD命令行窗口才會生效!!!