天天看點

Python多環境擴充管理--pyenv的部署與使用

引言:pyenv是一個簡單的python版本管理工具,通過改變shell的環境變量來切換不同的python版本,以達到多版本共存的目的。該工具不支援Windows系統。

pyenv工作原理如下:

  • pyenv安裝後會在系統PATH變量中插入shims路徑,每次執行python相關的可執行檔案時,會優先在shims裡尋找python路徑 ~/.pyenv/shims:/usr/local/bin:/usr/bin:/bin;
  • 系統選擇python版本,依如下順序選擇python的版本:
    1. shell變量設定(執行pyenv shell檢視)
    2. 目前可執行檔案目錄下的.python_version檔案裡的版本号(執行pyenv shell檢視)
    3. 上層目錄查詢找到的第一個.pyenv-version檔案
    4. 全局的版本号在 ~/.pyenv/version檔案内(執行pyenv global檢視)
  • 确定版本檔案的位置和python版本後,pyenv會根據 版本号在 ~/,pyenv/versions/檔案夾中查找對應的python版本。執行指令 pyenv versions可檢視系統目前安裝的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環境變量
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版本

    pyenv install 2.7.8

    如果安裝過程中出現如下圖Warning時,則表示缺少相應的開發庫,先解除安裝後,再安裝缺少的開發庫,再安裝python即可。
Python多環境擴充管理--pyenv的部署與使用

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 -)"