python虛擬環境-virtual environment
一、總結
一句話總結:
python虛擬環境是一個隔離/獨立的python開發環境,和系統python環境可以完全隔離,互不相關,相當於多了一個python開發環境。
1、python 可用於virtual environment的具體模塊?
venv:venv模塊在python3.3以上的版本可以使用
virtualenv:virtualenv在python2.7+和python3.3+都可以使用
2、python virtual environment優缺點?
優點:每個虛擬環境之間,以及虛擬環境和系統環境之間是完全隔離的,不同虛擬環境中,你可以安裝不同版本的模塊,就仿佛你可以同時擁有N多個不同的python開發環境。
缺點:每次進入某個虛擬環境之前,都要使用source命令激活。每次使用完,都要使用deactivate命令退出。
二、python虛擬環境-virtual environment
轉自或參考:python虛擬環境—virtual environment
https://www.jianshu.com/p/2fdb53825d35
操作系統:ubuntu16.04
1.1 什么時候會用到python虛擬環境
問題1
舉個例子,tensorflow(tf)是一個十分流行的python機器學習庫,你現在手里有兩個tf項目,其中項目A需要使用python2.7 + f1.2
,項目B需要使用python2.7 + tf1.6
.這兩個項目你得同時進行,怎么辦?
愚蠢的辦法是需要運行項目A時,將python2.7中的tf1.6卸載掉,安裝tf1.2;需要運行項目B時,將python2.7中的tf1.2卸載掉,安裝tf1.6。如果是單個模塊還好,但是tf的不同版本又依賴於python中的其他已安裝模塊,而且tf1.2和tf1.6對依賴模塊有不同的版本要求,那么轉換一次得卸載安裝好幾個模塊,是不是很爆炸?
問題2
課題組里幾個同門共用一台服務器,每個人擁有一個系統賬戶,其中只有一個人擁有root權限,里面每個人都需要使用python跑程序,而且每個人對python版本以及python模塊的版本都有不同需求,很多人又沒有root權限,如何解決?
使用python的虛擬環境可以輕松解決上面的問題!
1.2 什么是python虛擬環境
python虛擬環境是一個隔離/獨立的python開發環境,和系統python環境可以完全隔離,互不相關,相當於多了一個python開發環境。而且你在python虛擬環境中的開發過程和使用系統python一模一樣,你可以在你創建的python虛擬環境中使用pip工具安裝任何你需要的模塊,該模塊和系統python環境完全不相關。虛擬環境的這個特點就能解決上面的問題了。
1.3 安裝虛擬環境
python有兩個模塊可以用於創建和管理python虛擬環境:
- venv;
- virtualenv;
其中,venv模塊在python3.3以上的版本可以使用,而virtualenv在python2.7+和python3.3+都可以使用。
默認的系統python中是沒有安裝以上兩個工具的,需要使用以下命令安裝:
#安裝venv
sudo apt install python3-venv
#安裝virtualenv
pip install virtualenv
或者
sudo -H pip install virtualenv
安裝好之后,就可以使用這兩個工具安裝python虛擬環境了。
1.3.1 使用virtualenv
我的系統python版本有python2.7和python3.5,虛擬環境的版本只能是系統中已有的python版本。使用virtualenv安裝虛擬環境的命令如下:
#安裝python2.7虛擬環境
virtualenv /home/yan/env
什么參數都不指定的話,它會使用/usr/bin/python
路徑下的python解釋器版本,即python2.7。因此會默認安裝python2.7虛擬環境,/home/yan/env
表示虛擬環境的安裝路徑。
如果你要安裝的是python3.5的虛擬環境,可以這樣:
#安裝python3.5虛擬環境
virtualenv --python=python3.5 /home/yan/env3
一般情況下,上面兩條命令就夠了,這樣安裝得到的python虛擬環境和系統python環境是完全隔離的。
更多的命令選項可以在命令行中直接輸入virtualenv
命令獲取。
1.3.2 使用venv
venv只有python3可以使用,因此只能創建python3的虛擬環境,創建命令如下:
python3 -m venv /home/yan/env3
其中,python3 -m venv
是死命令,最后的安裝路徑自己指定。
注意:以上兩種安裝方式在安裝虛擬環境的同時也自動安裝了pip工具。
1.4 如何使用虛擬環境
安裝好虛擬環境之后,每次使用該虛擬環境前需要使用source
命令激活它。假設前面我在/home/yan/env3/
目錄下安裝了python3.5的虛擬環境,現在我使用以下命令激活它:
source /home/yan/env3/bin/activate
激活之后,在命令行提示符前面會有(env3)
的提示,表示當前你處的python虛擬環境,比如我電腦的情況:
yan@yanubuntu:~$ python3 -m venv /home/yan/env3
yan@yanubuntu:~$ source /home/yan/env3/bin/activate
(env3) yan@yanubuntu:~$
現在你可以在激活環境中干任何事情,比如使用pip命令在你新的python虛擬環境中安裝模塊:
pip install tensorflow
pip install opencv-python
pip install matplotlib
...
或者執行python腳本。
使用完該虛擬環境之后,你需要在命令行輸入deactivate
命令來退出該虛擬環境:
(env3) yan@yanubuntu:~$ deactivate
yan@yanubuntu:~$
之后就回到了正常的系統python環境中。
由於你創建該虛擬環境的目的是為了跑某個項目的程序,現在該項目做完了,不需要該虛擬環境了,你可以把該虛擬環境直接刪除,如何刪?
直接將創建虛擬環境時生成的文件夾刪掉,就這么簡單。比如我要把我剛才創建的env3虛擬環境刪除:
yan@yanubuntu:~$ rm -r /home/yan/env3
yan@yanubuntu:~$
在刪除虛擬環境前記得一定得先退出該虛擬環境。
1.5 總結
python虛擬環境的好處是:每個虛擬環境之間,以及虛擬環境和系統環境之間是完全隔離的,不同虛擬環境中,你可以安裝不同版本的模塊,就仿佛你可以同時擁有N多個不同的python開發環境。
唯一麻煩的一點是:每次進入某個虛擬環境之前,都要使用source
命令激活。每次使用完,都要使用deactivate
命令退出。
1.6 參考文獻
- https://docs.python.org/3/tutorial/venv.html.
- https://docs.python.org/3/library/venv.html#module-venv.
- https://virtualenv.pypa.io/en/latest/.