引言:pyenv是一個(gè)簡(jiǎn)單的python版本管理工具,通過改變shell的環(huán)境變量來切換不同的python版本,以達(dá)到多版本共存的目的。該工具不支持Windows系統(tǒng)。
pyenv工作原理如下:
- pyenv安裝后會(huì)在系統(tǒng)PATH變量中插入shims路徑,每次執(zhí)行python相關(guān)的可執(zhí)行文件時(shí),會(huì)優(yōu)先在shims里尋找python路徑 ~/.pyenv/shims:/usr/local/bin:/usr/bin:/bin;
- 系統(tǒng)選擇python版本,依如下順序選擇python的版本:
- shell變量設(shè)置(執(zhí)行pyenv shell查看)
- 當(dāng)前可執(zhí)行文件目錄下的.python_version文件里的版本號(hào)(執(zhí)行pyenv shell查看)
- 上層目錄查詢找到的第一個(gè).pyenv-version文件
- 全局的版本號(hào)在 ~/.pyenv/version文件內(nèi)(執(zhí)行pyenv global查看)
- 確定版本文件的位置和python版本后,pyenv會(huì)根據(jù) 版本號(hào)在 ~/,pyenv/versions/文件夾中查找對(duì)應(yīng)的python版本。執(zhí)行命令 pyenv versions可查看系統(tǒng)目前安裝的python版本。
部署pyenv
安裝epel源
下載新repo 到/etc/yum.repos.d/
epel(RHEL 7)
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
epel(RHEL 6)
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
安裝git工具
yum -y install git
clone pyenv至家目錄
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
配置pyenv環(huán)境變量
echo 'export PYENV_ROOT="$HOME/.pyenv" ' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH" ' >> ~/.bashrc
echo 'eval "$(pyenv init -)" ' >> ~/.bashrc
重啟當(dāng)前shell
exec $SHELL -l
執(zhí)行
pyenv versions
命令,有類似如下返回結(jié)果表示安裝正常:
[root@DH-SHARE ~]# pyenv versions
* system (set by /root/.pyenv/version)
使用pyenv
通過pyenv管理多python版本
- pyenv命令使用規(guī)則如下:
Usage: pyenv <command> [<args>]
接下來,通過pyenv安裝python 2.7.8版本來熟悉其用法。
查看可安裝的版本列表
pyenv install -list
-
安裝指定的python版本
pyenv install 2.7.8
如果安裝過程中出現(xiàn)如下圖Warning時(shí),則表示缺少相應(yīng)的開發(fā)庫,先卸載后,再安裝缺少的開發(fā)庫,再安裝python即可。
- 先卸載
pyenv uninstall 2.7.8
// 如果不知道缺少的開發(fā)庫包的名稱,可以用以下命令搜索
yum list | grep "readline"
- 安裝缺少的開發(fā)庫
yum -y install readline-devel bzip2-devel soci-sqlite3-devel
- 再重新安裝python
pyenv install 2.7.8
切換當(dāng)前目錄的python版本為2.7.8
pyenv local 2.7.8
切換全局目錄的python版本為2.7.8
pyenv global 2.7.8
刷新shims
pyenv rehash
pyenv更多用法如下:
命令 | 功能 |
---|---|
commands | 列出pyenv的所有可用命令 |
local | 設(shè)置或列出當(dāng)前目錄下的python版本號(hào) |
global | 設(shè)置或列出全局環(huán)境下的python版本號(hào) |
shell | 設(shè)置或列出shell環(huán)境下的python版本號(hào) |
install | 安裝指定的python版本 |
uninstall | 卸載指定的python版本 |
rehash | 重新加載pyenv的shims路徑(安裝完python版本后需執(zhí)行該命令) |
version | 展示當(dāng)前python版本號(hào)及其生效路徑 |
versions | 列出pyenv管控的所有可用的python版本 |
which | 列出要使用命令的絕對(duì)路徑 |
whence | 列出后綴命令的所有可用版本 |
一鍵安裝pyenv腳本
#!/bin/bash
if [ ! -e "/etc/yum.repos.d/epel.repo" ];then
uname -r | grep ^3 &>/dev/null
if [ $? -eq 0 ];then
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
else
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
fi
fi
rpm -q git &>/dev/null || yum install -y git
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
echo 'export PYENV_ROOT="$HOME/.pyenv" ' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH" ' >> ~/.bashrc
echo 'eval "$(pyenv init -)" ' >> ~/.bashrc
exec $SHELL -l
安裝方式二:
用pyenv-installer
安裝
curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
更新
pyenv update
卸載
rm -fr ~/.pyenv
并從~/.bashrc
中刪除這三行:
export PATH="~/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"