1. 簡介
virtualenv可以用來管理互不干擾的獨立python虛擬環境,在有些場景下非常有用,例如:
- 你有兩個python項目,一個是python2.7的,另一個是python3的,可以創建兩個虛擬環境。
- 你有兩個python項目,都依賴與一個module的不同版本,可以創建兩個不同的虛擬環境,里面安裝這個module的不同版本。
virtualenvwrapper在virtualenv的基礎上提供了一些更方便的命令。
2. 安裝
sudo pip install virtualenv sudo pip install virtualenvwrapper
在~/.bashrc里面加上:
export WORKON_HOME=/home/dev/virtualenv #你創建的虛擬環境所放置的目錄 source /usr/local/bin/virtualenvwrapper.sh
然后source ~/.bashrc,就可以使用了
3. 管理環境
首先我們創建一個python3的虛擬環境,當然系統里得先裝好了python3。
mkvirtualenv -p python3 py3env
-p 后面的參數指定了python3(也有可能要換成python3.2/python3.4,具體要看你系統里面/use/bin/里面的文件是什么名字),如果去掉這個參數,就會使用系統默認的python。最后一個參數py3env是創建的這個環境的名字。
執行完了之后,會自動切換到這個新創建的虛擬環境。我們會發現命令行提示符會發生改變,例如在我的機器上:從 (py3env)user@vm-ubuntu1204 變成了 (py3env)user@vm-ubuntu1204 ,最前面多了這個虛擬環境的名字。
其他一些常用命令:
deactivate # 退出當前虛擬環境
workon [虛擬環境名稱] # 使用某個虛擬環境
rmvirtualenv [虛擬環境名稱] # 刪除某個虛擬環境
lsvirtualenv # 列出所有虛擬環境
4. 包管理
在實際使用中,我們會用pip來管理python的包,而在虛擬環境里的包是和系統里的包分離開的,虛擬環境之間的包也是隔離開的。
在生產環境中,我們可能需要將程序部署在很多機器上,如果能方便地把依賴的包同步到所有機器上能省去很多時間。
可以在開發機器上執行下面這個命令,來列出所有的包並保存到packages.txt,其中-l參數是只列出當前虛擬環境的包:
pip freeze -l > packages.txt
然后在部署到生產環境的時候,把packages.txt也復制到每個機器,並在每個機器上執行:
pip install -r packages.txt
5. 在pycharm中使用虛擬環境
在設置里面Project Interpreter,點擊齒輪那個按鈕,選擇"Add Local",然后選擇剛才創建的虛擬環境的路徑。如下圖所示:
6. 在虛擬環境中設置默認命令
有些時候,我們希望在進入虛擬環境之后執行某些命令,或者設置一些環境變量。
例如:在django運行的時候,可以通過環境變量DJANGO_SETTINGS_MODULE來指定配置文件的路徑。
我們可以在虛擬環境目錄下面創建文件bin/postactivate,並在文件里面寫入:
export DJANGO_SETTINGS_MODULE=config.django.production
這個文件會在每次進入這個虛擬環境的時候被執行,這樣這個參數就會被設置了。
除了postactivate以外,其他階段也可以有這樣的設置,參看:https://virtualenvwrapper.readthedocs.org/en/latest/scripts.html
7. 參考鏈接
兩篇比較好的博文:
postactivate的用法:
http://stackoverflow.com/a/11134336
官方文檔:
https://virtualenvwrapper.readthedocs.org/en/latest/