對python virtualenv虛擬環境的理解

1:什麼是python環境?

要想在系統中運行python程序,則需要安裝python解釋器來解釋python程序;我們都知道python就是用來製造“輪子”的,我們在寫python程序時,可以使用其他人開發的“輪子”,這時我們就需要將其他人開發的輪子安裝到python解釋器中,以便於我們在程序中引用。由python解釋器和安裝到python解釋器中的其他人開發的輪子一起組成了python環境。

2:爲什麼需要多環境?

在操作系統下,我們可以安裝很多版本的Python解釋器。同樣,在每個版本的python解釋器中也可以安裝不同版本的第三方模塊(“輪子”), 比如Django1.8,Django1.11。隨着時間的流逝和科技的進步,每個項目,甚至同一個項目不同階段的版本,可能需要不同版本的Python解釋器和第三方模塊。爲了即清晰明瞭、又安全可靠的管理這些環境,通常爲每個項目或每個應用各自建立一套“獨立、隔離”的Python運行環境,從而就誕生了多環境。

3:什麼是虛擬環境?

上一部分中提到了多環境存在的必要性,所以我們可以在操作系統中安裝很多版本的python解釋器,再在每個python解釋器下安裝第三方模塊,從而滿足多環境的需要;假如同時需要10的不同的環境,我們就需要安裝10個python解釋器,這樣肯定很麻煩;所以我們就引入了虛擬環境,它也是一個“獨立、隔離”的Python運行環境,它裏面不但有指定版本的python解釋器,還可以安裝第三方模塊,而且創建虛擬環境的過程特別容易(最起碼比安裝python解釋器容易,還方便,下面會講到)。

4:多環境長什麼樣?

創建的虛擬環境和我們安裝的python環境是可共同存在於操作系統中的;共存在同一操作系統下的情形如下圖所示:

image.png-49.5kB

核心要點是:

  • 一個操作系統下,可以有多個“操作系統級別的”Python解釋器;
  • 每個Python解釋器有一個指向自己的pip工具,兩者一一對應;
  • 通過virtualenv可以把任何一個“操作系統級別的”Python解釋器虛擬成爲一個“虛擬級別”的解釋器;
  • 每個“虛擬級別”的解釋器又擁有自己獨立的pip工具和site-packages;
  • 所有“虛擬級別”的解釋器和所有“操作系統級別”的解釋器是共存的。

4:如何創建和使用虛擬環境

(1):安裝virtualenv

virtualenv就是用來創建虛擬環境的工具;其實virtualenv也是一個第三方的工具包,可以通過python解釋器下的pip命令來安裝;例如:pip install virtualenv,這樣在當前python解釋器下就有個virtualenv工具。假如當前系統中安裝了三個系統級別的python解釋器,版本分別爲2.7,3.6,3.8;如果使用的是3.6版本的pip,則virtualenv工具是安裝在了3.6版本的解釋器裏面。

(2):創建虛擬環境

使用virtualenv來創建虛擬環境時,會將virtualenv命令所在的python解釋器的版本虛擬到所創建的虛擬環境中;如果使用的是(1)中創建的virtualenv命令,則虛擬環境中的python解釋器版本就是3.6。我們還可以在創建虛擬環境時,通過-p參數來指定虛擬的python解釋器版本,例如:virtualenv –p 解釋器安裝路徑  env;env目錄下存放的就是新創建的虛擬環境,默認情況下該虛擬環境裏只有python解釋器,沒有任何的第三方模塊,是個純淨的環境;虛擬環境目錄如下圖:

(3):啓用虛擬環境

在虛擬環境的bin目錄下有個activate命令,用於啓動虛擬環境,例如:source  bin/activate;啓動之後會在命令行的最前方看到(venv)的字樣,它表示當前就處在venv這個虛擬環境內。現在,你可以把它當做一個正常的Python環境使用。例如:運行python命令,又或者使用pip安裝第三方庫pip install django;這些都被限制和綁定在venv這個虛擬環境內,不會對操作系統級別的本地的Python版本和其它的虛擬環境產生任何的影響!

(4):退出虛擬環境

在虛擬環境中有個deactivate命令,用於退出虛擬環境,例如:deactivate;退出當前虛擬環境以後,在命令行的最前方就看不到(venv)的字樣了。

(5):刪除虛擬環境

要刪除虛擬環境,直接刪除虛擬環境所在的目錄就可以了,刪除其中一個虛擬環境對其他的虛擬環境和其他系統級別的環境都不影響。刪除虛擬環境後,所有以前使用該環境的工程都將受到影響。這點很好理解,所以請確保環境不再有需要再刪除!

通過這5步知道虛擬環境的方便之處了吧,需要虛擬環境了就建立一個,不需要了就刪除,不影響其他的環境,多颯!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章