zoukankan      html  css  js  c++  java
  • CENTOS 7 升级安装 Python 3.5

     

    写在前面的话

    本文采取源码的方式安装 Python 3.5.2,如果是其它版本会有或多或少的差异,且写这篇的时候官网最新的是 Python 3.7,个人使用 3.5 就足够了,没必要更新到最新,否则出现未知 BUG 你都不知道该找谁!

    特别说明,本文安装之后系统的默认 Python 版本将变成 3.5.2,但是这并不影响本身 2.7 的使用!

    文章最后附带了 CENTOS 7 升级 Python 3 的一键安装脚本!

    环境说明
    服务
    版本
    操作系统
    CentOS Linux release 7.5.1804
    远程工具
    Xshell 5
    Python
    3.5.2
    开始安装

    【1】Python 下载地址:

    https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tar.xz

    【2】安装常见依赖包:

    yum -y install zlib-devel bzip2-devel wget openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make

    【3】上传源码包到 /usr/local/src 并解压:

    cd /usr/local/src/
    
    # 解压
    xz -d Python-3.5.2.tar.xz
    tar -xf Python-3.5.2.tar

    【4】编译安装:

    # 编译安装
    cd Python-3.5.2
    ./configure --prefix=/usr/local/python35 --enable-shared CFLAGS=-fPIC
    make && make install

    【5】添加环境变量:

    # 添加环境变量
    echo 'export PATH=$PATH:/usr/local/python35/bin' >>/etc/profile

    【6】添加新的 Python 命令指向:

    # 修改系统默认的 Python 2.7
    rm -f /usr/bin/python
    ln -s /usr/local/python35/bin/python3 /usr/bin/python
    ln -s /usr/local/python35/bin/pip3.5 /usr/bin/pip

    【7】修改库依赖,避免使用报错:

    ldd /usr/local/python35/bin/python3

    如图:

    备注:可以看到这里有一个 not found,解决办法如下:

    cp /usr/local/python35/lib/libpython3.5m.so.1.0 /lib64/

    再度查看:

    【8】生效环境变量:

    source /etc/profile

    【9】修改 yum 配置:如果不修改,yum 将无法使用!

    # 修改 yum
    sed -i "s#/usr/bin/python#/usr/bin/python2.7#g" /usr/bin/yum
    sed -i "s#/usr/bin/python#/usr/bin/python2.7#g" /usr/libexec/urlgrabber-ext-down

    【10】查看升级结果:

    【11】配置 pip:

    # 升级 PIP 和安装 virtualenv
    pip install --upgrade pip
    pip install virtualenv

    【12】CENTOS 7 Python 3 升级完成!

    一键安装脚本
    #!/bin/bash
    
    
    ###################################################################
    # author:  Dylan
    # useage: Update Python 3.5
    ###################################################################
    
    
    ###################################################################
    # 输出颜色定义
    ###################################################################
    Color_Text() {
      echo -e " e[0;$2m$1e[0m"
    }
    
    Echo_Red() {
      echo $(Color_Text "$1" "31")
    }
    
    Echo_Green() {
      echo $(Color_Text "$1" "32")
    }
    
    Echo_Yellow() {
      echo $(Color_Text "$1" "33")
    }
    
    
    ###################################################################
    # 变量定义
    ###################################################################
    # Python 版本
    Python_Version='3.5.2'
    
    # Python 安装包
    Python_Package="Python-${Python_Version}"
    
    # Python 下载地址
    Python_Url="https://www.python.org/ftp/python/${Python_Version}/${Python_Package}.tar.xz"
    
    # 下载路径
    Download_Path='/usr/local/src'
    
    # 安装路径
    Install_Path='/usr/local/python35'
    
    
    ###################################################################
    # 网络检查函数
    ###################################################################
    NETWORK_CHECK() {
        ping www.baidu.com -c 3
        if [ $? != 0 ];then
            Echo_Red "该服务器无法连网,请配置服务器网络!"
            exit 1
        fi
    }
    
    
    ###################################################################
    # 升级 Python 函数
    ###################################################################
    PYTHON_UPDATE() {
    
        # 检查网络
        NETWORK_CHECK
    
        # 安装依赖
        Echo_Yellow "==========================================================================="
        Echo_Green '安装依赖:'
        Echo_Yellow "==========================================================================="
        yum -y install zlib-devel bzip2-devel wget openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make
    
        # 检查 Python 版本
        Echo_Yellow "==========================================================================="
        Echo_Green '当前版本 Python:'
        Echo_Yellow "==========================================================================="
        /usr/bin/python -V
        Echo_Yellow "==========================================================================="
    
        # 选择确认
        read -p "是否继续升级 Python [y/n]:" Chose_Number
        case ${Chose_Number} in
            [yY][eE][sS]|[yY])
                Echo_Yellow "你选择的是yes,升级继续进行..."
            ;;
            [nN][oO]|[nN])
                Echo_Yellow "你选择的是yes,升级即将终止..."
                exit
            ;;
            *)
                Echo_Red "输入错误,即将退出升级..."
                exit
        esac
    
    
        # 下载安装包
        Echo_Yellow "==========================================================================="
        Echo_Green "开始从网上下载 ${Python_Package}..."
        Echo_Yellow "==========================================================================="
        cd ${Download_Path}
        wget ${Python_Url}
        if [ $? != 0 ];then
            Echo_Red "网上下载 ${Python_Package} 失败,请检查!"
            exit 1
        fi
        
        Echo_Yellow "==========================================================================="
        Echo_Green "${Python_Package} 下载成功,即将开始升级..."
        Echo_Yellow "==========================================================================="
        Echo_Green "开始解压 Python ..."
        Echo_Yellow "==========================================================================="
        xz -d ${Python_Package}.tar.xz && tar -xf ${Python_Package}.tar
        if [ $? != 0 ];then
            Echo_Red "${Python_Package} 解压失败,请检查!"
            exit 1
        fi
        
        cd ${Python_Package}
        Echo_Yellow "==========================================================================="
        Echo_Green "开始安装 Python ..."
        Echo_Yellow "==========================================================================="
        ./configure --prefix=${Install_Path} --enable-shared CFLAGS=-fPIC
        make -j 4 && make install
        if [ $? != 0 ];then
            Echo_Red "${Python_Package} 编译失败,请检查!"
            exit 1
        fi
    
        # 配置环境变量
        Echo_Yellow "==========================================================================="
        Echo_Green "修改环境变量 ..."
        Echo_Yellow "==========================================================================="
        echo "export PATH=$PATH:${Install_Path}/bin" >>/etc/profile
    
        # 修改原有的 Python 为新的
        Echo_Yellow "==========================================================================="
        Echo_Green "替换旧版 Python ..."
        Echo_Yellow "==========================================================================="
        mv /usr/bin/python /tmp
        ln -s ${Install_Path}/bin/python3 /usr/bin/python
    ln -s ${Install_Path}/bin/pip3.5 /usr/bin/pip
    # 修改库文件 Echo_Yellow "===========================================================================" Echo_Green "修改 Python 库文件 ..." Echo_Yellow "===========================================================================" ldd ${Install_Path}/bin/python3 cp ${Install_Path}/lib/libpython3.5m.so.1.0 /lib64/ # 修改 yum 配置 Echo_Yellow "===========================================================================" Echo_Green "修改 yum ..." Echo_Yellow "===========================================================================" sed -i "s#/usr/bin/python#/usr/bin/python2.7#g" /usr/bin/yum sed -i "s#/usr/bin/python#/usr/bin/python2.7#g" /usr/libexec/urlgrabber-ext-down # 使配置生效 source /etc/profile . /etc/profile # 升级 PIP Echo_Yellow "===========================================================================" Echo_Green "升级 PIP ..." Echo_Yellow "===========================================================================" pip install --upgrade pip pip install virtualenv # 查看升级后版本 Echo_Green '当前版本 Python(请手动执行:source /etc/profile):' Echo_Yellow "===========================================================================" /usr/bin/python -V Echo_Yellow "===========================================================================" } ################################################################### # 开始升级 Python ################################################################### Echo_Yellow "===========================================================================" Echo_Green '作者:Dylan' Echo_Green '备注:QQ:1214966109' Echo_Yellow "===========================================================================" sleep 2 PYTHON_UPDATE
    小结

    我个人是一直在用这种安装方式升级 Python,多环境推荐使用 virtualenv,如果你安装有问题,也可以通过上我博客首页的 QQ 与我取得联系,让我对这篇进行完善。

  • 相关阅读:
    luogu P1330 封锁阳光大学
    P4817 [USACO15DEC]Fruit Feast 水果盛宴
    P2041 分裂游戏
    洛谷——P3373 【模板】线段树 2&& B 数据结构
    洛谷——P1471 方差
    洛谷——P1073 最优贸易
    洛谷——P1516 青蛙的约会
    洛谷——P1962 斐波那契数列
    洛谷——P3811 【模板】乘法逆元
    58到家数据库30条军规解读
  • 原文地址:https://www.cnblogs.com/Dy1an/p/9649923.html
Copyright © 2011-2022 走看看