Python多環(huán)境擴(kuò)展管理--pyenv的部署與使用

引言: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的版本:
    1. shell變量設(shè)置(執(zhí)行pyenv shell查看)
    2. 當(dāng)前可執(zhí)行文件目錄下的.python_version文件里的版本號(hào)(執(zhí)行pyenv shell查看)
    3. 上層目錄查詢找到的第一個(gè).pyenv-version文件
    4. 全局的版本號(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即可。

Paste_Image.png
  - 先卸載
  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 -)"
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 可以看我的博客 lmwen.top 或者訂閱我的公眾號(hào) 簡(jiǎn)介有稍微接觸python的人就會(huì)知道,python中...
    ayuLiao閱讀 3,152評(píng)論 1 5
  • Python版本管理:pyenv和pyenv-virtualenv(MAC、Linux)、virtualenv和v...
    inke閱讀 39,247評(píng)論 8 76
  • 以下內(nèi)容均轉(zhuǎn)自我的博客 YuanBLQ 由于 python 擁有眾多的版本,以及不同模塊也有不同的版本。如果每個(gè)...
    YuanBLQ閱讀 6,073評(píng)論 0 1
  • 1. 小丫姓張,但是卻不是最小的,其實(shí)是家里最大的大丫,可是,大丫不喜歡老大的身份,從骨子里希望自己是那個(gè)家里最小...
    O莯夏O閱讀 165評(píng)論 0 0
  • 她說我怎么可以那么閑。 她說我想去做兼職。 她說可不可以帶我溜噠。 她說我要做我自己。 她說為...
    晰晰子閱讀 360評(píng)論 0 0