美文网首页
Python多环境扩展管理--pyenv的部署与使用

Python多环境扩展管理--pyenv的部署与使用

作者: CaiGuangyin | 来源:发表于2017-09-19 13:49 被阅读248次

    引言: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即可。

    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 安装指定的python版本
    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 -)"
    

    相关文章

      网友评论

          本文标题:Python多环境扩展管理--pyenv的部署与使用

          本文链接:https://www.haomeiwen.com/subject/lrrwsxtx.html