有的時候由於各類緣由,在操做系統下,咱們會安裝不少版本的Python解釋器。一樣,咱們也有可能由於各類緣由,須要不一樣版本的模塊,好比Django1.8,Django1.11。再加上pip工具管理器的版本混亂問題。這就使得不少人在Python的環境管理上產生極大的混亂。python
一般每一個項目,甚至項目不一樣階段的版本,須要不一樣的Python解釋器和依賴庫。爲了清晰明瞭,安全可靠的管理這些環境,須要爲每一個項目或每一個應用各自創建一套「獨立、隔離」的Python運行環境。linux
virtualenv就是用來爲每個項目建立一套「獨立隔離」的Python運行環境的工具。django
在Python3.4以前,virtualenv須要獨立手動安裝後,方可執行。以後的版本中,Python自帶了一個venv庫,執行Python –m venv就能夠達到與virtalenv一樣的效果。更多的用戶習慣上仍是使用virtualenv的方式。windows
Python多解釋器環境加上virtualenv建立的多虛擬環境共存在同一操做系統下的情形通常以下圖所示:安全
核心要點是:python2.7
若是你理解了上面幾點,就能明白virtualenv和pip在使用上的區別。工具
以windows操做系統爲例,要安裝virtualenv,建議直接使用當前環境變量下指定的pip,也就是你操做系統默認的那個python版本所綁定的pip,這樣方便命令調用。一般以下:ui
pip install virtualenv
操作系統
能夠在命令行界面中驗證安裝:where virtualenv
命令行
能夠看出,這裏的virtualenv是做爲一個可執行程序,安裝在我係統默認的Python36版本下。而我當前操做系統下其實有3個版本的Python:
你或許有疑問?那我要虛擬Python2.7的版本怎麼辦?在2.7下也裝一個virtualenv?不須要的!virtualenv能夠指定虛擬的Python解釋器版本,只要你本地操做系統下安裝了這個版本!
若是本身手動管理全部的虛擬環境,一般會創建一個目錄,用來放置全部的虛擬環境。這裏:mkdir d:\Python_virtualenvs
,而後運行: virtualenv –p c:\Python27\Python2.exe –-no-site-packages d:\Python_virtualenvs\for_django
-p: 指定你要虛擬的Python版本,這裏選擇了本地的python2.7
–-no-site-packages:表示在創建虛擬環境時不將原版本中的第三方庫拷貝過來,這樣就能得到一個純淨的Python環境。
d:\Python_virtualenvs\for_django:代表在該目錄下,創建一個叫作for_django的虛擬環境,這樣的命名方式,讓你一眼就能看出這個虛擬環境是爲誰創建的。
咱們看一眼文件系統中的狀況,從截圖中能夠看出,環境很是乾淨!
命令行下,進入你要使用的虛擬環境的目錄下的script文件夾,運行activate
命令。或者使用絕對路徑的方式調用該命令。
注意命令提示符(for_django),它表示你當前在for_django這個虛擬環境內。如今,你能夠當作一個正常的Python環境使用。例如運行python命令,又或者使用pip安裝第三方庫pip install requests。這些都被限制和綁定在for_django這個虛擬環境內,不會對操做系統下本地的Python版本和其它的虛擬環境產生任何的影響!
要退出虛擬環境,只要運行script目錄下的deactivate
命令就能夠了。
要刪除虛擬環境,直接刪除虛擬環境所在的目錄就能夠了,注意不要將其它的環境給刪了。可是,刪除虛擬環境後,全部之前使用該環境的工程都將受到影響。這點很好理解,因此請確保環境再也不有須要再刪除!
對於linux操做系統,使用方法基本相似。只是虛擬環境中的文件路徑和腳本調用的方式和windows系統下不太同樣,仔細看下圖中的bin目錄,提供了一個activate腳本,以及一個寫入環境變量的deactivate命令。
建立虛擬環境: $ virtualenv -p /usr/bin/python2.7 –-no-site-packages my_venv
啓動虛擬環境: $ source my_venv/bin/activate
退出虛擬環境: $ deactivate
刪除虛擬環境: $ rm –r my_venv
windows下的開發,不少時候使用命令行並非那麼方便,尤爲是在Pycharm開發環境下,頻繁切換界面也是種負擔。實際上Pycharm能夠指定解釋器,直接將項目的Python解釋器設置爲你要使用的虛擬環境就行,以下所示:
在settings中:
選擇Python:
virtualenv虛擬環境配合pip的freeze功能,能夠一次性快捷的將整個環境下的第三方模塊所有記錄下來:pip freeze > d:\requirements.txt
對應的,也能夠用它一次性經過在別的機器上或虛擬環境裏,將文件裏列出的第三方庫安裝起來。只須要使用命令:pip install -r requirements.txt