Linux安装pyenv(多版本控制器)

发布于 2021-06-29  306 次阅读


由于python的各种优点,学习python的人,越来越多。但是,学习python有一个不容忽视的问题就是版本问题。到现在为止,python的版本有很多,但是问题在于python2与python3的区别。python3的对一些模块进行了改变,导致了python2写的代码有的不被python3兼容,从而导致程序运行报错。因此,在工作和学习python的时候,最好是安装一个pyenv,创建虚拟环境,多安装几个python的版本。于是下面就是介绍安装pyenv的python多版本操作。

安装pyenv

1.安装pyenv

curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
或者
git clone https://github.com/yyuu/pyenv.git ~/.pyenv

bash代码为:

#!/usr/bin/env bash

set -e
[ -n "$PYENV_DEBUG" ] && set -x

if [ -z "$PYENV_ROOT" ]; then
  export PYENV_ROOT="${HOME}/.pyenv"
fi

colorize() {
  if [ -t 1 ]; then printf "\e[%sm%s\e[m" "$1" "$2"
  else echo -n "$2"
  fi
}

# Checks for `.pyenv` file, and suggests to remove it for installing
if [ -d "${PYENV_ROOT}" ]; then
  { echo
    colorize 1 "WARNING"
    echo ": Can not proceed with installation. Kindly remove the '${PYENV_ROOT}' directory first."
    echo
  } >&2
    exit 1
fi

failed_checkout() {
  echo "Failed to git clone $1"
  exit -1
}

checkout() {
  [ -d "$2" ] || git clone --depth 1 "$1" "$2" || failed_checkout "$1"
}

if ! command -v git 1>/dev/null 2>&1; then
  echo "pyenv: Git is not installed, can't continue." >&2
  exit 1
fi

if [ -n "${USE_GIT_URI}" ]; then
  GITHUB="git://github.com"
else
  GITHUB="https://github.com"
fi

checkout "${GITHUB}/pyenv/pyenv.git"            "${PYENV_ROOT}"
checkout "${GITHUB}/pyenv/pyenv-doctor.git"     "${PYENV_ROOT}/plugins/pyenv-doctor"
checkout "${GITHUB}/pyenv/pyenv-installer.git"  "${PYENV_ROOT}/plugins/pyenv-installer"
checkout "${GITHUB}/pyenv/pyenv-update.git"     "${PYENV_ROOT}/plugins/pyenv-update"
checkout "${GITHUB}/pyenv/pyenv-virtualenv.git" "${PYENV_ROOT}/plugins/pyenv-virtualenv"
checkout "${GITHUB}/pyenv/pyenv-which-ext.git"  "${PYENV_ROOT}/plugins/pyenv-which-ext"

if ! command -v pyenv 1>/dev/null; then
  { echo
    colorize 1 "WARNING"
    echo ": seems you still have not added 'pyenv' to the load path."
    echo
  } >&2

  { # Without args, `init` commands print installation help
    "${PYENV_ROOT}/bin/pyenv" init || true
    "${PYENV_ROOT}/bin/pyenv" virtualenv-init || true
  } >&2

2.配置

如果采用第一种,系统是会告诉你怎么做的(即将最后的三行追加到~/.bash_profile,做环境变量)

# Load pyenv automatically by adding
# the following to ~/.bash_profile:

export PATH="/root/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

如果采用第二种(同样是做环境变量)

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

3.使用变量

source ~/.bash_profile

安装python的不同版本

1.查看可安装的python的版本

pyenv install –list
Available versions:
2.1.3
2.2.3
2.3.7
2.4.0
2.4.1
2.4.2
2.4.3
2.4.4
2.4.5
2.4.6
2.5.0
2.5.1
2.5.2
2.5.3
2.5.4
2.5.5
2.5.6
2.6.6
2.6.7
2.6.8
2.6.9
2.7.0
2.7-dev
2.7.1
2.7.2
2.7.3
2.7.4
2.7.5
2.7.6
2.7.7
2.7.8
2.7.9
2.7.10
2.7.11
2.7.12
2.7.13
2.7.14
2.7.15
2.7.16
2.7.17
2.7.18
3.0.1
3.1.0
3.1.1
3.1.2
3.1.3
3.1.4
3.1.5
3.2.0
3.2.1
3.2.2
3.2.3
3.2.4
3.2.5
3.2.6
3.3.0
3.3.1
3.3.2
3.3.3
3.3.4
3.3.5
3.3.6
3.3.7
3.4.0
3.4-dev
3.4.1
3.4.2
3.4.3
3.4.4
3.4.5
3.4.6
3.4.7
3.4.8
3.4.9
3.4.10
3.5.0
3.5-dev
3.5.1
3.5.2
3.5.3
3.5.4
3.5.5
3.5.6
3.5.7
3.5.8
3.5.9
3.5.10
3.6.0
3.6-dev
3.6.1
3.6.2
3.6.3
3.6.4
3.6.5
3.6.6
3.6.7
3.6.8
3.6.9
3.6.10
3.6.11
3.6.12
3.6.13
3.7.0
3.7-dev
3.7.1
3.7.2
3.7.3
3.7.4
3.7.5
3.7.6
3.7.7
3.7.8
3.7.9
3.7.10
...

2.安装python

pyenv install -v 2.7.13
pyenv install -v 3.6.4

卸载python
pyenv uninstall 2.7.13

常见问题及解决方案:
在使用pyenv install安装python,可能会比较慢,甚至下载安装不成功

<1>.这时最好使用是下载好python源码包,然后通过pyenv进行安装(可以下载到境外云服务器)
<2>.将python源码包放置在~/.pyenv/cache/目录中(不要解压 ; 如没有cache就创建一个)
<3>.执行pyenv install 3.6.4

3.查看版本

<1>查看pyenv版本

pyenv --version
pyenv 1.2.3

<2>查看当前python版本

pyenv versions

  • system (set by /root/.pyenv/version)
    2.7.13
    3.6.4

<3>查看当前使用的版本(system 代表当前系统的python 版本)

pyenv version
system (set by /root/.pyenv/version)

4.切换python版本

pyenv global 3.6.4

pyenv version
3.6.4 (set by /root/.pyenv/version)

pyenv versions
system
2.7.13
* 3.6.4 (set by /root/.pyenv/version)

注:若出现切换版本不成功

检查一下你的.pyenv的可执行文件的目录是什么,看看PATH="$PYENV_ROOT/shims:$PATH"中的目录是shims还是 bin

将此内容添加到.bashrc文件,或者新加到.zshrc里面

export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/shims:$PATH"
if command -v pyenv 1>/dev/null 2>&1; then
 eval "$(pyenv init -)"
fi

创建虚拟python环境

1.安装插件

创建虚拟的python环境需要pyenv-virtualenv的插件,试着pyenv virtual补全一下,如果存在无需安装

如果不存在,执行如下操作
git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv
echo ‘eval “$(pyenv virtualenv-init -)”’ >> ~/.bash_profile
source ~/.bash_profile

2.创建虚拟环境

pyenv virtualenv 2.7.13 env2713

3.查看python版本

pyenv versions
* system (set by /root/.pyenv/version)
2.7.13
2.7.13/envs/env2713
3.6.4
3.6.4/envs/env364
env2713
env364

使用python虚拟环境

1.使用虚拟环境

[xxx]#pyenv activate env364
pyenv-virtualenv: prompt changing will be removed from future release. configure `export PYENV_VIRTUALENV_DISABLE_PROMPT=1’ to simulate the behavior.v364)

[xxx]# python
Python 3.6.4 (default, Apr 19 2018, 10:35:10)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux
Type “help”, “copyright”, “credits” or “license” for more information.