centos7 安装pyenv管理python版本

1、安装pyenv的依赖,不然安装python版本的时候可能会报错

sudo yum install @development zlib-devel bzip2 bzip2-devel readline-devel sqlite \
sqlite-devel openssl-devel xz xz-devel libffi-devel findutils

2、安装pyenv

从github上进行安装即可

$ curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash

安装后需要配置path,将pyenv文件添加到系统路径中,其原理是修改bash启动文件,每次建立ssh的时候会自动运行。具体配置如下:

## 配置
root@pts/2 $ vim ~/.bashrc 
    # .bashrc
    
    # User specific aliases and functions
    
    alias rm='rm -i'
    alias cp='cp -i'
    alias mv='mv -i'
    
    ## add by lilin at 20191015
    export PYENV_ROOT="$HOME/.pyenv"
    export PATH="$PYENV_ROOT/bin:$PATH"
    eval "$(pyenv init -)"
    
    # Source global definitions
    if [ -f /etc/bashrc ]; then
        . /etc/bashrc
    fi

保存后需要使得配置生效,有如下三种做法:

## 配置生效
    ### 方式一
    重新打开一个session
    ### 方式二
    source ~/.bashrc
    ### 方式三
    exec $SHELL -l

输入pyenv命令,如下显示表示安装成功

[root@iZbp18vvdgiezb7zecn0dmZ ~]# pyenv 
pyenv 1.2.13
Usage: pyenv <command> [<args>]

Some useful pyenv commands are:
   commands    List all available pyenv commands
   local       Set or show the local application-specific Python version
   global      Set or show the global Python version
   shell       Set or show the shell-specific Python version
   install     Install a Python version using python-build
   uninstall   Uninstall a specific Python version
   rehash      Rehash pyenv shims (run this after installing executables)
   version     Show the current Python version and its origin
   versions    List all Python versions available to pyenv
   which       Display the full path to an executable
   whence      List all Python versions that contain the given executable

See `pyenv help <command>' for information on a specific command.
For full documentation, see: https://github.com/pyenv/pyenv#readme

使用命令查询当前系统中存在的python版本

[root@iZbp18vvdgiezb7zecn0dmZ ~]# pyenv versions
* system (set by /root/.pyenv/version)

当前只存在系统默认的python版本,centos中默认是Python2.7

3、安装多个版本的python,这里我们安装3.7.4

首先安装解压缩依赖,如果没有,会无法解压下载的python安装文件导致报错

sudo yum  -y install zlib*

使用pyenv install -l 或者pyenv install --list查看可以安装的python版本,发现python已经提供很多版本,包括3.7.4,使用如下命令安装对应版本

[root@iZbp18vvdgiezb7zecn0dmZ ~]# pyenv install 3.7.4 
WARNING: Please make sure you remove any previous custom paths from your /root/.pydistutils.cfg file.
Installing Python-3.7.4...
WARNING: The Python bz2 extension was not compiled. Missing the bzip2 lib?
Installed Python-3.7.4 to /root/.pyenv/versions/3.7.4

[root@iZbp18vvdgiezb7zecn0dmZ ~]# pyenv versions
* system (set by /root/.pyenv/version)
  3.7.4

可以看到,成功安装了3.7.4版本的python,当前激活的是系统默认版本。
小技巧1:这里可以使用tab自动补全版本名字,比如输入pyenv install 3.7.,按tab即可显示匹配成功的版本。

[root@iZbp18vvdgiezb7zecn0dmZ ~]# pyenv install 3.7
3.7.0     3.7.1     3.7.2     3.7.3     3.7.4     3.7.5rc1  3.7-dev   
[root@iZbp18vvdgiezb7zecn0dmZ ~]# pyenv install 3.7.
3.7.0     3.7.1     3.7.2     3.7.3     3.7.4     3.7.5rc1

小技巧2:网络环境比较差的时候,可以建立缓存文件夹,将对应版本的python安装包下载到缓存文件夹中,再使用安装命令时会自动在缓存文件夹中查找,一旦命中,就不用再去下载(特别是某些网络环境特别差或者访问国外网站网速慢的情况下),会直接安装。

[root@iZbp18vvdgiezb7zecn0dmZ ~]# cd ~/.pyenv/cache/
[root@iZbp18vvdgiezb7zecn0dmZ ~]# mkdir cache
[root@iZbp18vvdgiezb7zecn0dmZ ~]# cd cache/
[root@iZbp18vvdgiezb7zecn0dmZ cache]# ll
total 0
[root@iZbp18vvdgiezb7zecn0dmZ cache]# wget https://www.python.org/ftp/python/3.7.4/Python-3.7.4.tar.xz
--2019-10-15 15:13:20--  https://www.python.org/ftp/python/3.7.4/Python-3.7.4.tar.xz
Resolving www.python.org (www.python.org)... 151.101.228.223, 2a04:4e42:1a::223
Connecting to www.python.org (www.python.org)|151.101.228.223|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 17131432 (16M) [application/octet-stream]
Saving to: 钬楶ython-3.7.4.tar.xz钬

100%[=============================================================================================================================>] 17,131,432  17.7KB/s   in 18m 53s

2019-10-15 15:32:15 (14.8 KB/s) - 钬楶ython-3.7.4.tar.xz钬saved [17131432/17131432]

4、常用命令

完整命令请参考官方文档

安装

pyenv install -l|--list # 列出所有可安装的Python版本
pyenv install <version> # 安装某个Python

卸载
卸载某个Python,-f参数指定是否强制卸载,如果强制卸载的话不会弹出提示,而且如果版本不存在的话也不会显示错误信息:

pyenv uninstall [-f|--force] <version>

versions
列出所有已安装的Python,当前使用的Python会用星号标出:

$ pyenv versions
  2.5.6
  2.6.8
* 2.7.6 (set by /home/yyuu/.pyenv/version)
  3.3.3
  jython-2.5.3
  pypy-2.2.1

global
通过写~/.pyenv/version文件的方式设置全局Python:

$ pyenv global 2.7.6

local
通过在当前目录写.python-version文件的方式设置当前目录下的Python:

pyenv local 2.7.6

shell
指定当前shell使用的Python:

$ pyenv shell pypy-2.2.1

当不再需要的时候,用–set来清除:

$ pyenv shell --unset

5、常见问题

用pyenv安装Python的时候可能会出现各种各样问题,例如缺少zlib、缺少ctypes模块等等。对此pyenv也有专门一个页面解决。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章