Linux 下 python 版本管理工具 pyenv

简介

pyenv是一个简单的python版本管理工具,前身为pythonbrewpyenv允许你改变全局的python版本,安装多种不同的python版本,设置应用指定的python版本以及创建/管理虚拟的python环境;

安装

Centos6.8上安装pyenv,先安装依赖

1
yum -y install readline readline-devel readline-static openssl openssl-devel openssl-static sqlite-devel bzip2-devel bzip2-libs

安装pyenv:

1
curl -L https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer | bash

配置环境变量,并添加 pyenv 初始化到你的shell

1
2
3
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc

常用命令

  1. 查看当前设置默认的 python 版本

    1
    pyenv version
  2. 查看当前已安装的所有python版本

    1
    pyenv versions
  3. 查看当前可安装的python版本列表

    1
    pyenv install -l | less
  4. 安装指定版本的python

    1
    pyenv install 2.7.1
  5. 设置全局python版本

    1
    pyenv global <python版本>
  6. 设置局部 Python 版本
    设置之后可以在目录内外分别试下which pythonpython --version看看效果, 如果没变化的话可以pyenv rehash之后再试试

    1
    pyenv local <python版本>

python版本本地安装

以本地安装 2.7.1 版本为例,

  1. 通过执行pyenv install 2.7.1 -v获取下载地址,然后通过浏览器下载文件,在目录/tmp准备Python-2.7.1.tgz文件;
  2. 然后在 /tmp下启动一个简单的 httpserver

    1
    2
    cd /tmp
    python -m SimpleHTTPServer 4999
  3. 在执行pyenv install 2.7.1之前要先添加一个环境变量

    1
    2
    export PYTHON_BUILD_MIRROR_URL="http://127.0.0.1:4999/"
    pyenv install 2.7.1 -v
  4. httpserver的打印log中发现收到的请求是一个字符串
    HEAD /ca13e7b1860821494f70de017202283ad73b1fb7bd88586401c54ef958226ec8 HTTP/1.1“,我们要把Python-2.7.1.tgz复制一份到这个字符串为名的文件,然后重启httpserver,最后用pyenv即可安装

    1
    2
    3
    4
    5
    cp Python-2.7.1.tgz ca13e7b1860821494f70de017202283ad73b1fb7bd88586401c54ef958226ec8

    python -m SimpleHTTPServer 4999

    pyenv install 2.7.1

FAQ

支持 YouCompleteMe

需要在 .bashrc 加入下面命令:

1
export PYTHON_CONFIGURE_OPTS="--enable-shared"