一、安裝配置pyenv
經常遇到這樣的情況:
系統自帶的Python是2.x,自己需要Python 3.x,測試嚐鮮;
系統是2.6.x,開發環境是2.7.x
由於Mac機器系統保護的原因,默認的Python中無法對PIP一些包升級,需要組建新的Python環境。
此時需要在系統中安裝多個Python,但又不能影響系統自帶的Python,即需要實現Python的多版本共存。pyenv就是這樣一個Python版本管理器。
1、安裝pyenv
brew install pyenv
2、根據提示需要添加
if which pyenv > /dev/null; then eval “$(pyenv init -)”; fi
export PYENV_ROOT=/usr/local/var/pyenv
這裏注意了,如果使用的zsh,務必不要在zshrc配置裏面的插件開啓pyenv。會導致終端無限循環退出,只需要在你的zshrc結尾處追加上面兩行就行了。筆者親測。
3、查看當前激活的是那個版本的Python
pyenv version
4、查看已經安裝了那些版本的Python
pyenv versions
5、安裝指定版本的Python
pyenv install 3.5.2
brew install wget # mac安裝wget
v=3.5.2;wget http://npm.taobao.org/mirrors/python/$v/Python-$v.tar.xz -P ~/.pyenv/cache/;pyenv install $v # 用淘寶的源安裝python
#安裝完成後必須rehash
pyenv rehash
####此處有坑!
用pyenv versions查看,明明已經切換成功,但是用python -V卻還是系統版本。原因是pyenv沒有加到$PATH環境變量裏去,解決辦法如下:
export PYENV_ROOT=~/.pyenv
export PATH=$PYENV_ROOT/shims:$PATH
6、切換和使用指定的版本Python版本有3種方法:
λ ~/ pyenv
pyenv 20151006
Usage: pyenv []
Some useful pyenv commands are:
commands 列出所有pyenv可用的命令
local 設置或顯示本地應用程序特定的Python版本
global 設置或顯示系統全局的Python版本
shell 設置或顯示shell外殼的Python版本
install 使用python-build安裝指定Python版本
uninstall 卸載已經安裝的Python
rehash 刷新 pyenv shims (安裝之後運行這個)
version 查看當前使用的版本
versions 列出已經安裝的Python版本,當前激活版本用*號標註
which 顯示的完整路徑的可執行文件
whence 列出包含給定的可執行所有的Python版本
See `pyenv help ’ for information on a specific command.
For full documentation, see: https://github.com/yyuu/pyenv#readme
特別建議:
系統全局用系統默認的Python比較好,不建議直接對其操作
pyenv global system
用local進行指定版本切換,一般開發環境使用。
pyenv local 2.7.10
對當前用戶的臨時設定Python版本,退出後失效
pyenv shell 3.5.0
取消某版本切換
pyenv local 3.5.0 --unset
優先級關係:shell——local——global
二、利用virtualenv和Virtaulenvwrapper管理虛擬Python環境
virtualenv用於創建獨立的Python環境,多個Python相互獨立,互不影響,它能夠:
在沒有權限的情況下安裝新套件
不同應用可以使用不同的套件版本
套件升級不影響其他應用
Virtaulenvwrapper是virtualenv的擴展包,用於更方便管理虛擬環境,它可以做:
將所有虛擬環境整合在一個目錄下
管理(新增,刪除,複製)虛擬環境
切換虛擬環境
1、安裝和使用方法
#安裝
pip install virtualenv
pip install virtualenvwrapper
#創建虛擬環境
mkvirtualenv [虛擬環境名稱]
此時還不能使用virtualenvwrapper,默認virtualenvwrapper安裝在/usr/local/bin下面,實際上你需要運行virtualenvwrapper.sh文件纔行,先別急,打開這個文件看看,裏面有安裝步驟,我們照着操作把環境設置好。
如果你使用的bash或者zsh
#創建目錄用來存放虛擬環境
mkdir $HOME/.virtualenvs
#在. bash_profile 或者 .zshrc 追加兩行
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
運行:
source ~/.bashrc
source ~/.zshrc
此時virtualenvwrapper就可以使用了。
2、創建虛擬環境例如:
#在當前的環境的Python版本下創建名稱爲py3dev的虛擬環境。
mkvirtualenv py3dev
默認情況下,虛擬環境會依賴系統環境中的site packages,就是說系統中已經安裝好的第三方package也會安裝在虛擬環境中,如果不想依賴這些package,那麼可以加上參數 –no-site-packages建立虛擬環境
例如:
mkvirtualenv --no-site-packages [虛擬環境名稱]
mkvirtualenv --no-site-packages py3dev
3、查看創建的虛擬環境:
λ ~/ lsvirtualenv
py2dev
======
py3dev
======
λ ~/ workon
py2dev
py3dev
4、啓動某虛擬環境:
works [虛擬環境名稱]
workon py3dev
5、刪除某個虛擬環境:
rmvirtualenv [虛擬環境名稱]
rmvirtualenv py3dev
6、刪除某個虛擬環境需要先退出這個環境
deactivate
三、融合 pyenv、virtualenv、Virtaulenvwrapper 管理Python版本和虛擬環境
如何對Python2.7.10和Python3.5.0版本分別創建虛擬環境?
有這三個工具其實非常簡單,主要是確保環境切換成功後在創建虛擬環境。
#確保切換成功,我建議 source .zshrc 一下在切換
#安裝全新的Python2.7.10版本
pyenv install 2.7.10
pyenv rehash
#切換到剛安裝的這個版本
pyenv local 2.7.10
#確保切換成功
source .zshrc
#驗證一下版本,pip發現裏面包很少
pip list
#驗證版本
python -V
#務必在這個新的2.7.10中安裝
pip install virtualenv
pip install virtualenvwrapper
#務必
source .zshrc
#創建2.7.10的開發環境
mkvirtualenv py2dev
#創建完某版本的開發環境後務必退出,當前虛擬環境,不然就是虛擬環境中在創建了。
deactivate
#退出2.7.10環境
pyenv local --unset 2.7.10
source .zshrc
3.5.0的虛擬環境創建也是一樣,因此驗證2.7.10和3.5.0的虛擬環境
(py3dev)☁ ~ deactivate
☁ ~ workon py2dev
(py2dev)☁ ~ python -V
Python 2.7.10
(py2dev)☁ ~ deactivate
☁ ~ workon py3dev
(py3dev)☁ ~ python -V
Python 3.5.0
(py3dev)☁ ~ deactivate
☁ ~
至今沒找到切換Python版本的時候要加載 source .zshrc。經過無數次試驗,結果是務必這麼幹,不知道爲什麼。
#愉快無痛升級,一鍵升級所有PIP包
pip list --outdated | grep ‘1* (’ | cut -d " " -f 1 | xargs pip install -U
a-z ↩︎