virtualenv
經過建立獨立Python開發環境的工具, 來解決依賴、版本以及間接權限
問題. 好比一個項目依賴Django1.3 而當前全局開發環境爲Django1.7, 版本跨度過大, 致使不兼容使項目沒法正在運行, 使用virtualenv能夠解決這些問題.css
virtualenv
建立一個擁有本身安裝目錄的環境, 這個環境不與其餘虛擬環境共享庫, 可以方便的管理python版本和管理python庫html
使用pip
安裝Virtualenv, 使用過python的都應該知道pip
包管理神器吧, 即便不知道, 網站也有大把的教程, 不過推薦查看官方安裝指南python
$ pip install virtualenv
//或者因爲權限問題使用sudo臨時提高權限 $ sudo pip install virtualenv
如今開始使用virtualenv管理python環境git
➜ Test git:(master) ✗ virtualenv ENV #建立一個名爲ENV的目錄, 而且安裝了ENV/bin/python, 建立了lib,include,bin目錄,安裝了pip New python executable in Installing setuptools, pip...done. ➜ Test git:(master) ✗ cd ENV ➜ ENV git:(master) ✗ ll drwxr-xr-x 14 andrew_liu staff 476 12 8 08:49 bin drwxr-xr-x 3 andrew_liu staff 102 12 8 08:49 include drwxr-xr-x 3 andrew_liu staff 102 12 8 08:49 lib
lib
,全部安裝的python庫都會放在這個目錄中的lib/pythonx.x/site-packages/
下bin
,bin/python
是在當前環境是使用的python解釋器若是在命令行中運行
virtualenv --system-site-packages ENV
, 會繼承/usr/lib/python2.7/site-packages
下的全部庫, 最新版本virtualenv把把訪問全局site-packages
做爲默認行爲
default behavior.ruby
#ENV目錄下使用以下命令 ➜ ENV git:(master) ✗ source ./bin/activate #激活當前virtualenv (ENV)➜ ENV git:(master) ✗ #注意終端發生了變化
#使用pip查看當前庫 (ENV)➜ ENV git:(master) ✗ pip list pip (1.5.6) setuptools (3.6) wsgiref (0.1.2) #發如今只有這三個 pip freeze #顯示全部依賴 pip freeze > requirement.txt #生成requirement.txt文件 pip install -r requirement.txt #根據requirement.txt生成相同的環境
使用下面命令bash
$ deactivate
能夠使用-p PYTHON_EXE
選項在建立虛擬環境的時候指定python版本網絡
#建立python2.7虛擬環境 ➜ Test git:(master) ✗ virtualenv -p /usr/bin/python2.7 ENV2.7 Running virtualenv with interpreter /usr/bin/python2.7 New python executable in ENV2.7/bin/python Installing setuptools, pip...done.
#建立python3.4虛擬環境 ➜ Test git:(master) ✗ virtualenv -p /usr/local/bin/python3.4 ENV3.4 Running virtualenv with interpreter /usr/local/bin/python3.4 Using base prefix '/Library/Frameworks/Python.framework/Versions/3.4' New python executable in ENV3.4/bin/python3.4 Also creating executable in ENV3.4/bin/python Installing setuptools, pip...done.
到此已經能夠解決python版本衝突問題和python庫不一樣版本的問題python2.7
某些特殊需求下,可能沒有網絡, 咱們指望直接打包一個ENV, 能夠解壓後直接使用, 這時候能夠使用virtualenv -relocatable
指令將ENV修改成可更改位置的ENV工具
#對當前已經建立的虛擬環境更改成可遷移 ➜ ENV3.4 git:(master) ✗ virtualenv --relocatable ./ Making script ./bin/easy_install relative Making script ./bin/easy_install-3.4 relative Making script ./bin/pip relative Making script ./bin/pip3 relative Making script ./bin/pip3.4 relative
$ virtualenv -h
當前的ENV都被修改成相對路徑, 能夠打包當前目錄, 上傳到其餘位置使用網站
這並不能使虛擬環境跨平臺使用