pyenv
是 Python
版本管理工具。pyenv
能夠改變全局的 Python
版本,安裝多個版本的 Python
,設置目錄級別的 Python
版本,還能建立和管理 virtual python environments
。全部的設置都是用戶級別的操做,不須要 sudo
命令。html
pyenv
主要用來管理 Python
的版本,好比一個項目須要 Python 2.x
,一個項目須要 Python 3.x
。 而 virtualenv
主要用來管理 Python
包的依賴,不一樣項目須要依賴的包版本不一樣,則須要使用虛擬環境。python
pyenv
經過系統修改環境變量來實現 Python
不一樣版本的切換。而 virtualenv
經過將 Python
包安裝到一個目錄來做爲 Python
包虛擬環境,經過切換目錄來實現不一樣包環境間的切換。git
pyenv
的美好之處在於,它並無使用將不一樣的 PATH
植入不一樣的 shell
這種高耦合的工做方式,而是簡單地在 PATH
的最前面插入了一個墊片路徑(shims
):~/.pyenv/shims:/usr/local/bin:/usr/bin:/bin
。全部對 Python
可執行文件的查找都會首先被這個 shims
路徑截獲,從而使後方的系統路徑失效。github
不一樣系統請參考 Common build problems,安裝必須的工具。shell
根據官網的 安裝說明 或者 自動安裝。 若是使用 Mac
直接使用 Homebrew
。安裝成功後記得在 .bashrc
或者 .bash_profile
中添加三行來開啓自動補全。vim
# 根據本身的環境配置
export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
複製代碼
pyenv
提供了自動安裝的工具,執行命令安裝便可:segmentfault
curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash
複製代碼
保證系統有 git
,不然須要新安裝 git
。bash
若是想要更加詳細的瞭解安裝過程,可使用手動安裝。將 pyenv
檢出到你想安裝的目錄。建議路徑爲:$HOME/.pyenv
網絡
cd ~
git clone git://github.com/yyuu/pyenv.git .pyenv
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
source ~/.bashrc
複製代碼
添加環境變量 PYENV_ROOT
指向 pyenv
檢出的根目錄,並向 $PATH
添加 $PYENV_ROOT/bin
以提供訪問 pyenv
命令的路徑。curl
這裏的 shell
配置文件(~/.bash_profile
)依不一樣 Linux
而需做修改,若是使用 zsh
則須要相應的配置 ~/.zshrc
在使用 pyenv
以後使用 pip
安裝的第三方模塊會自動安裝到當前使用 Python
版本下,不會和系統模塊產生衝突。使用 pip
安裝模塊以後,若是沒有生效,記得使用 pyenv rehash
來更新墊片路徑。
使用 pyenv commands
顯示全部可用命令
# 查看系統當前安裝的python列表
pyenv versions
# 列出可安裝版本
pyenv install --list
# 安裝指定版本 Python
pyenv install -v 3.5.1
# 卸載指定版本 Python
pyenv uninstall 2.7.3
# 顯示當前python安裝路徑
pyenv which python
# 建立墊片路徑
# 爲全部已安裝的可執行文件建立 shims
# 如:~/.pyenv/versions/*/bin/*
# 每當你增刪了 Python 版本或帶有可執行文件的包(如 pip)之後,都應該執行一次本命令
pyenv rehash
複製代碼
# 設置全局的 Python 版本,經過將版本號寫入 ~/.pyenv/version 文件的方式
pyenv global <版本號>
# 設置面向程序的本地版本,經過將版本號寫入當前目錄下的 .python-version 文件的方式。經過這種方式設置的 Python 版本優先級較 global 高。
# pyenv 會從當前目錄開始向上逐級查找 .python-version 文件,直到根目錄爲止。若找不到,就用 global 版本。
pyenv local <版本號>
# 設置面向 shell 的 Python 版本,經過設置當前 shell 的 PYENV_VERSION 環境變量的方式。這個版本的優先級比 local 和 global 都要高。
pyenv shell <版本號>
# --unset 參數能夠用於取消當前 shell 設定的版本。
pyenv shell --unset
複製代碼
shell > local > global
pyenv-virtualenv
是 pyenv
下基於 virtualenv
的一款插件,經過 pyenv-virtualenv
插件能夠很好的和 virtualenv
結合。
使用自動安裝 pyenv 後,它會自動安裝部分插件,其中包括了 pyenv-virtualenv
。
若使用 Homebrew
進行安裝,則可以使用命令 brew install pyenv-virtualenv
安裝 pyenv-virtualenv
插件。
這樣安裝以後須要執行以下配置:
# 使用 zsh shell
vim ~/.zshrc
# 使用系統默認
vim ~/.bash_profile
# 在 `.zshrc` 或 `.bash_profile` 文件最後寫入:
# pyenv-virtualenv
if which pyenv-virtualenv-init > /dev/null;
then eval "$(pyenv virtualenv-init -)";
fi
# 使配置生效
source ~/.zshrc
# or
source ~/.bash_profile
複製代碼
# 建立虛擬環境
# 若不指定 Python 版本,默認使用當前環境 Python 版本
pyenv virtualenv <Python 版本號> <虛擬環境名稱>
# 列出當前虛擬環境
pyenv virtualenvs
# 激活虛擬環境
pyenv activate <虛擬環境名稱>
# 退出虛擬環境
pyenv deactivate
# 刪除虛擬環境
pyenv uninstall <虛擬環境名稱>
複製代碼
由於國內網絡環境,若是在局域網內 pip
下載慢,能夠嘗試使用阿里雲提供的鏡像,建立 vim ~/.pip/pip.conf
,而後填入:
[global]
index-url = http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com
複製代碼
更多 pip
國內源:
豆瓣:http://pypi.douban.com
阿里雲:http://mirrors.aliyun.com/pypi/simple
清華大學:https://pypi.tuna.tsinghua.edu.cn/simple