背景
- 不同python版本
同一電腦上的多個(gè)python版本种吸,開發(fā)著需要考慮版本兼容 - 同一python版本中同一庫(kù)的不同版本管理
例如在python2.7下應(yīng)用A是基于Django1.6哈打,應(yīng)用B是基于Django1.7的,這種情況怎么管理。
引薦virtualenv, virtualenvwrapper
“The basic problem being addressed is one of dependencies and versions, and indirectly permissions. Imagine you have an application that needs version 1 of LibFoo, but another application requires version 2. How can you use both these applications? If you install everything into/usr/lib/python2.7/site-packages (or whatever your platform’s standard location is), it’s easy to end up in a situation where you unintentionally upgrade an application that shouldn’t be upgraded.
Or more generally, what if you want to install an application and leave it be? If an application works, any change in its libraries or the versions of those libraries can break the application.
Also, what if you can’t install packages into the global site-packages directory? For instance, on a shared host.”
安裝
一般使用pip:
[sudo] pip install virtualenv
[sudo] pip install virtualenvwrapper
使用
創(chuàng)建虛擬環(huán)境
virtualenv pythonenv
virtualenv pythonenv --no-site-packages #依賴系統(tǒng)環(huán)境中的site packages
啟用虛擬環(huán)境
source pythonenv/bin/activate #linux
pythonenv\Scripts\activate.bat #Windows
退出虛擬環(huán)境
pythonenv/bin/deactivate #linux
pythonenv\Scripts\deactivate #Windows
虛擬環(huán)境的管理
將所有的虛擬環(huán)境整合在一個(gè)目錄下。
管理(新增、移除衅谷、復(fù)制)所有的虛擬環(huán)境。
可以使用一個(gè)命令切換虛擬環(huán)境似将。
Tab 補(bǔ)全虛擬環(huán)境的名字获黔。
每個(gè)操作都提供允許使用者自定的hooks。
可撰寫容易分享的extension plugin 系統(tǒng)在验。
常用管理命令
列出虛擬環(huán)境列表:workon 或者lsvirtualenv
新建虛擬環(huán)境:mkvirtualenv [虛擬環(huán)境名稱]
啟動(dòng)/切換虛擬環(huán)境:workon [虛擬環(huán)境名稱]
刪除虛擬環(huán)境:rmvirtualenv [虛擬環(huán)境名稱]
離開虛擬環(huán)境:deactivate
總結(jié)
基于virtualenv + virtualenvwrapper可以很好的完成環(huán)境隔離玷氏,保證對(duì)每個(gè)應(yīng)用的環(huán)境是干凈的。而且對(duì)一個(gè)干凈的環(huán)境可以通過:
pip freeze > requirements.txt
將包依賴信息保存在requirements.txt文件
pip install -r requirements.txt
會(huì)自動(dòng)安裝所有包, 方便應(yīng)用部署分發(fā)