為什麼要使用virtualenv?
首先,virtualenv為應用提供了隔離的Python運作環境,可以解決不同應用間多版本的沖突問題。
比如,現在的電腦中一般同時具有python2和python3,系統的運作需要python2,做開發時往往需要最新的python3。而在使用工具
pip
時,所有第三方的包都會被安裝到預設的python(一般是python2)的site-packages目錄下,有時這不是我們所希望的。
這正是要用到virtualenv的場合。virtualenv會把使用者指定版本的python複制到虛拟環境下,并修改相關的環境變量,使得
python
和
pip
指令指向目前虛拟環境。使用者可以在虛拟環境中任意操作,而不會對外部造成影響。
1 安裝虛拟環境工具
pip3 install virtualenv
pip3 install virtualenvwrapper
Ubuntu16.04下建立python的虛拟環境
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIwczX0xiRGZkRGZ0Xy9GbvNGL2EzXlpXazxCb4JTWopEWhRXOxI2c4JjY3ZkMMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL4IjN5ITN1kTMyITMxAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
Ubuntu16.04下建立python的虛拟環境
2 配置
- 建立虛拟環境的管理目錄: ~表示目前使用者的家目錄
mkdir ~/.virtualenvs
- 在啟動檔案~/.bashrc下添加虛拟環境變量:打開.bashrc檔案,向其底部添加如下
export WORKON_HOME=$HOME/.virtualenvs # 所有虛拟環境存儲的目錄
source /usr/local/bin/virtualenvwrapper.sh
第一行意思是指定python虛拟環境存放路徑
第二行意思是使virtualenvwrapper.sh檔案生效(運作virtualenvwrapper.sh)
- 回到shell界面,輸入指令令其生效
source ~/.bashrc
Ubuntu16.04下建立python的虛拟環境
- 如果報錯-bash: /usr/local/bin/virtualenvwrapper.sh: No such file or directory
說明檔案沒在這個路徑下,可以通過which 指令檢視(which是用來檢視目前要執行的指令所在的路徑),修改source /usr/local/bin/virtualenvwrapper.sh
which virtualenvwrapper.sh
- 報錯:/usr/bin/python: No module named virtualenvwrapper
錯誤原因:Ubuntu安裝了2.7和3.x兩個版本的python,在安裝時使用的是sudo pip3 install virtualenvwrapper
在運作的時候預設使用的是python2.x,但在python2.x中不存在對應的子產品
是以,在bashrc檔案裡面加入如下指令即可:(注:一定要加在虛拟環境變量之前)
VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
讓其自動選擇Python3解釋器,就不會報錯了!
3 檢視python3目錄(其他版本也可)
which python3
#我的python3是在/usr/bin/python3
4 建立python3虛拟環境
mkvirtualenv -p /usr/bin/python3 py3env
-p /usr/bin/python3指定了要複制的python的目錄
py3env是存放環境的檔案夾名稱
5 激活虛拟環境
#使用source指令來使得環境變量修改後立即生效
source ./py3env/bin/activate
可以看到指令提示符有一個
(py3env)
的字首,即表示激活成功。
此時,你的所有python、pip操作都會指向虛拟環境建立時複制的那一份python。
比如再次執行which python,如圖:
原來的路徑是
/usr/bin/python3
,激活虛拟環境後是
/home/test/virtualenv/py3env/bin/python3
。
6 退出虛拟環境
deactivate
(py3env)
字首消失,環境變量被重設為原來的。
7 Tip
切記要在工作時激活虛拟環境,結束工作後退出。