引言:pyenv是一個簡單的python版本管理工具,通過改變shell的環境變量來切換不同的python版本,以達到多版本共存的目的。該工具不支援Windows系統。
pyenv工作原理如下:
- pyenv安裝後會在系統PATH變量中插入shims路徑,每次執行python相關的可執行檔案時,會優先在shims裡尋找python路徑 ~/.pyenv/shims:/usr/local/bin:/usr/bin:/bin;
- 系統選擇python版本,依如下順序選擇python的版本:
- shell變量設定(執行pyenv shell檢視)
- 目前可執行檔案目錄下的.python_version檔案裡的版本号(執行pyenv shell檢視)
- 上層目錄查詢找到的第一個.pyenv-version檔案
- 全局的版本号在 ~/.pyenv/version檔案内(執行pyenv global檢視)
- 确定版本檔案的位置和python版本後,pyenv會根據 版本号在 ~/,pyenv/versions/檔案夾中查找對應的python版本。執行指令 pyenv versions可檢視系統目前安裝的python版本。
部署pyenv
-
安裝epel源
下載下傳新repo 到/etc/yum.repos.d/
epel(RHEL 7)
epel(RHEL 6)wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
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環境變量
echo 'export PYENV_ROOT="$HOME/.pyenv" ' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH" ' >> ~/.bashrc
echo 'eval "$(pyenv init -)" ' >> ~/.bashrc
- 重新開機目前shell
exec $SHELL -l
- 執行
指令,有類似如下傳回結果表示安裝正常:pyenv versions
[root@DH-SHARE ~]# pyenv versions
* system (set by /root/.pyenv/version)
使用pyenv
通過pyenv管理多python版本
- pyenv指令使用規則如下:
Usage: pyenv <command> [<args>]
接下來,通過pyenv安裝python 2.7.8版本來熟悉其用法。
- 檢視可安裝的版本清單
pyenv install -list
- 安裝指定的python版本
如果安裝過程中出現如下圖Warning時,則表示缺少相應的開發庫,先解除安裝後,再安裝缺少的開發庫,再安裝python即可。pyenv install 2.7.8

Paste_Image.png
- 先解除安裝
pyenv uninstall 2.7.8
// 如果不知道缺少的開發庫包的名稱,可以用以下指令搜尋
yum list | grep "readline"
- 安裝缺少的開發庫
yum -y install readline-devel bzip2-devel soci-sqlite3-devel
- 再重新安裝python
pyenv install 2.7.8
- 切換目前目錄的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 | 設定或列出目前目錄下的python版本号 |
global | 設定或列出全局環境下的python版本号 |
shell | 設定或列出shell環境下的python版本号 |
install | |
uninstall | 解除安裝指定的python版本 |
rehash | 重新加載pyenv的shims路徑(安裝完python版本後需執行該指令) |
version | 展示目前python版本号及其生效路徑 |
versions | 列出pyenv管控的所有可用的python版本 |
which | 列出要使用指令的絕對路徑 |
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 -)"