幾分鐘就能學會的Python虛擬環境教程
什麼是虛擬環境
我們在使用Python的時候,通常用pip
來進行包管理。比如我們要安裝一個叫requests
的庫,那麼我們就會採用以下命令去安裝:
pip install requests
那你知道,這個requests
被安裝到哪裡去了嗎?
其實,這個requests庫被安裝到 Python安裝目錄/Lib/site-packages下面。要知道,site-packages是一個全域性包路徑
。
啥意思呢?就是說,我安裝的requests
這個庫對這臺電腦的這個版本的Python都生效。
那這樣會造成一個問題
:
如果requests在1.0版本和1.1版本發生了較大變化,比如:
1.0版本的時候有個方法叫requests.get
,到了1.1版本,這個包改名叫requests.got
, 然後還支援了不少新特性
。
如果我有一個很老的
專案,一直用的是1.0的版本,而我現在寫了一個新專案,又想用到1.1版本的最新特性。
那我如果只有一個版本的requests,我就沒法相容新專案
和舊專案
了。
所以我們有了虛擬環境的概念,其實也可以說是隔離環境
。說簡單點就是,這個python的庫管理跟隨你的專案走,你專案裡就算用到100個庫
,也不會給你裝到全域性去,這樣就隔離了全域性的庫。
安裝virtualenv
而達到這樣的目的,都是基於一款python的庫: virtualenv
。(它支援python2和3)
pip3 install virtualenv
tips: 有的python庫,他不一定是給python程式碼呼叫的,你可以把它想象成一個可執行程式
,比如我們常用的gunicorn,雖然是通過pip安裝,但是安裝好了之後它是一個可執行程式
。
建立虛擬環境
安裝好virtualenv以後,我們就可以來開闢一個虛擬環境,用於隔離全域性的庫了。
virtualenv venv
在我們的專案根目錄
下執行這個命令,可以看到一些提示:
啟用虛擬環境
我們根目錄下會多一個venv的資料夾,裡面有點東西。
別急,我們還得先啟用這個虛擬環境
。
- Mac/Linux
source venv/bin/activate
- Windows
venv\Scripts\activate
其實可以看到,venv的Scripts裡面有個activate.bat(啟用虛擬環境指令碼),而Unix系統下自帶source,所以有些區別。
接著你就可以在虛擬環境暢遊了,你所有安裝/解除安裝的包都會在venv目錄下被安排的服服帖帖的,不會被影響也不會影響
到全域性的庫。
退出虛擬環境
source venv/bin/deactivate
- Windows
venv\Scripts\deactivate
用deactivate就好了,這樣你的包管理又回到了全域性,venv標識也消失不見了。
其實這個很像node_modules
,node_modules在專案的根目錄生成,並通過package.json進行包的版本管理
,不影響全域性模式,非常好用。
簡單的說就是各玩各的,互不干擾
!
標題從3分鐘->5分鐘,最後改為幾分鐘,你讀完了麼?反正我是讀完了!