virtualenv
virtualenv 用於創建一個隔離的 Python 環境。
每個項目都有自己的依賴包,這些依賴包有時存在版本沖突,處理這種情況最好方法就是為每個項目創建一個專屬的環境。
安裝
穩定版 $ sudo pip install virtualenv
最新版 $ sudo pip install https://github.com/pypa/virtualenv/tarball/develop
用法
創建虛擬環境
1. 創建默認的虛擬環境
$ virtualenv env 命令表示創建一個名為 env 的虛擬環境。每個虛擬環境都包含一個專屬的 env/bin/python 和 env/bin/pip,任何時候運行它們都表示 env 將作為你的運行環境。
2. 創建指定解釋器版本的虛擬環境
如果你的系統中同時安裝了兩個版本的 Python,例如 python2.7 和 python3.4,那么你可以指定創建的虛擬環境中使用哪個版本的 Python。
$ virtualenv -p python2.7 env2.7 或 $ virtualenv -p python3.4 env3.4。
3. 創建繼承系統第三方庫的虛擬環境
如果你已經安裝了一些第三方庫在系統的 site-packages 目錄中,你希望在新的虛擬環境中也可以使用它們,那么你可以使用 --system-site-packages 選項:
$ virtualenv --system-site-packages env
啟用和退出虛擬環境
1. 啟用虛擬環境
要啟用 env 虛擬環境,只需要運行 $ source env/bin/activate 命令,該命令會修改系統路徑 $PATH,將 env/bin 路徑置於系統路徑之首。source 命令表示更改當前 Shell 環境。
啟用了虛擬環境后,所有使用 pip 命令新安裝的程序包都將置於當前環境下,而不會影響到系統環境或者其他虛擬環境。
2. 退出虛擬環境
退出虛擬環境只要執行 $ deactivate 命令。
virtualenvwrapper
virtualenvwrapper 是一個基於 virtualenv 之上的工具,它將所有的虛擬環境集中起來管理。
安裝
$ sudo pip install virtualenvwrapper 命令會自動安裝 virtualenvwrapper 及其依賴包 virtualenv, virtualenv-clone。
virtualenvwrapper 默認將所有虛擬環境放在 ~/.virtualenvs 目錄下管理,你可以修改環境變量 WORKON_HOME 來指定虛擬環境的保存目錄。
使用 $ source /usr/local/bin/virtualenvwrapper.sh 命令來啟用 virtualenvwrapper,你可以將該命令添加到 ~/.bashrc 或 ~/.profile 等 shell 啟動文件中,以便登錄 shell 后可以直接使用 virtualenvwrapper 提供的命令。
用法
1. 創建虛擬環境
$ mkvirtualenv env 命令表示在 $WORKON_HOME 目錄下創建了一個 env 虛擬環境。
2. 啟動虛擬環境
$ workon env 命令表示啟用了 env 虛擬環境。workon 命令會自動停用當前所處的虛擬環境(如果存在的話)然后啟動指定的虛擬環境,這樣你就可以快速在各個虛擬環境之間切換。另外 workon 命令還提供了虛擬環境名稱自動補完功能以幫助你選擇虛擬環境。
3. 退出虛擬環境
執行 $ deactivate 命令退出虛擬環境。
4. 刪除虛擬環境
執行 $ rmvirtualenv env 命令刪除 env 虛擬環境。
5. 其他命令
lsvirtualenv顯示所有虛擬環境。cdvirtualenv跳轉至當前虛擬環境目錄,方便查看虛擬環境的site-packages目錄。cdsitepackages直接跳轉至當前虛擬環境的site-packages目錄。lssitepackages顯示當前虛擬環境的site-packages目錄內容。
autoenv
autoenv 可以讓你進入一個含有 .env 文件的目錄時,自動執行 .env 文件來設置系統環境。
如果進入某個項目目錄時自動激活它所對應的虛擬環境,那么可以在 .env 文件中配置激活期待的虛擬環境。
安裝
$ sudo pip install autoenv 命令自動安裝 autoenv 工具。
使用 $ source /usr/local/opt/autoenv/activate.sh 命令啟用 autoenv 工具,你可以將該命令添加到 ~/.bashrc 等 shell 啟動文件中。
用法
為項目設置特定的系統環境,那么可以在項目根目錄下面新建一個 .env 文件,將所需設定的系統環境寫在 .env 文件中。
當啟用 autoenv 后,它會自動執行 .env 文件。
例如進入 workspaces 目錄自動退出虛擬環境,編輯 workspaces/.env 添加以下內容:
BASE_PATH=`dirname "${BASH_SOURCE}"`
PWD=`pwd`
if [[ "${BASE_PATH}" == "${PWD}" ]]
then
declare -f -F deactivate &>/dev/null
if [[ "${?}" == "0" ]]
then
deactivate
fi
fi
又例如進入 workspaces/project 目錄自動激活虛擬環境,編輯 workspaces/project/.env 添加以下內容:
BASE_PATH=`dirname "${BASH_SOURCE}"`
PWD=`pwd`
if [[ "${BASE_PATH}" == "${PWD}" ]]
then
if [[ -e bin/activate ]]
then
source bin/activate
fi
fi
