問題:
在開發過程中如果想要安裝Python包時可以使用“sudo pip install 包名”來安裝。
在開發不同項目時使用同一個包的不同版本,都是用上面的命令進行安裝會造成其他項目無法運行(覆蓋掉了)。
解決方案:
虛擬環境
虛擬環境可以搭建獨立的Python運行環境,使單個項目運行環境和其他項目運行環境互不影響。
下面介紹一下安裝方法:
1. 安裝virtualenv ---- sudo pip install virtualenv
測試:
$ mkdir testvirtualenv
$ cd testvirtualenv
$ virtualenv env1 ------就可以成功建立一個虛擬環境env1
2. 安裝virtualenvwrapper ----- sudo easy_install virtualenvwrapper (我使用pip 沒有安裝成功,所以使用的easy_install)
virtualenvwrapper是virtualenv的擴充包,可以更方便的新增、刪除、複製、切換虛擬環境。
3.安裝完virtualenvwrapper使用virtualenvwrapper.sh需要配置一下環境變數直接把下面兩行寫入~/.bash_profile檔案中即可:
export WORKON_HOME='~/workspace' ##這個目錄為建立虛擬環境是所在的目錄,可以自己指定目錄
source /usr/local/bin/virtualenvwrapper.sh
在配置完環境變數以後執行一下source ~/.bash_profile命令,不然不生效
4.來測試一下,建立兩個虛擬環境env1、env2
$ mkvirtualenv env1 (建立虛擬環境env1)
建立成功以後當前路徑前面就會有(env1)
$mkvirtualenv env2 (建立虛擬環境env2)
下面是一些常用的基本命令
1.退出當前虛擬環境
$deactivate
2.列出虛擬環境列表
$lsvirtualenv -b
env1
env2
3.切換虛擬環境
$workon env2
4.進入當前虛擬環境
$cdvirtualenv
5.刪除虛擬環境
$rmvirtualenv env1
6.進入當前環境的site-packages
$cdsitepackages
7.查看環境中安裝了哪些包
$lssitepackages
8.複製虛擬環境
$cpvirtualenv env1 env3
讓我們來安裝一些包試試(在虛擬環境中安裝包不用sudo)
$workon env1
$pip install numpy
$pip install scipy
$pip install matplotlib
$ pip install ipython
$pip install pandas
$pip install scikit-learn
執行lssitepackages來查看env1中已經安裝的包多了很多
workon env2 切換到env2
$lssitepackages 可以看到在env2中並沒有剛才在env1中安裝的包。
就這樣啦不同的環境互不影響、互不傷害^_^