美文网首页
Centos7.9安装python3.10

Centos7.9安装python3.10

作者: 阿登20 | 来源:发表于2022-05-23 00:20 被阅读0次

    python 编译安装

    先升级openssl

    # 1. 查看当前openssl的版本信息
    openssl version #1.0.2 需要升级
    
    # 2. 安装对应的依赖库
    sudo yum -y groupinstall "Development tools"
    sudo yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel libffi-devel gdbm-devel db4-devel libpcap-devel xz-devel make
    sudo yum install zlib* -y
    sudo yum install -y gcc gcc-c++ python-devel wget
    sudo yum install -y zlib zlib-dev openssl-devel sqlite-devel bzip2-devel libffi libffi-devel gcc gcc-c++
     
    # 3. 下载openssl安装文件
    mkdir /tmp/softwarebak
    cd /tmp/softwarebak
    wget https://www.openssl.org/source/openssl-1.1.1k.tar.gz
     
    # 4. 解压安装openssl,并进入openssl的目录
    tar -zxvf openssl-1.1.1.k.tar.gz
    cd openssl-1.1.1.k
    export LANG=zh_CN.UTF-8
    export LANGUAGE=zh_CN.UTF-8
    
    ./config --prefix=/usr/local/openssl shared zlib 
    sudo make && make install
    
    # 5. 备份当前openssl
    mv /usr/bin/openssl /usr/bin/openssl.bak
    mv /usr/include/openssl /usr/include/openssl.bak 
    
    # 6. 配置使用新版本
    ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
    ln -s /usr/local/openssl/include/openssl /usr/include/openssl
    
    # 7. 更新动态链接库数据并重新加载
    echo /usr/local/openssl/lib >> /etc/ld.so.conf
    ldconfig -v
    
    # 8. 查看是否升级成功
    openssl version
    
    # 9. 如果缺少libssl.s0.1.1
    ln -s /usr/local/openssl/lib/libssl.so.1.1 /usr/lib64/libssl.so.1.1
    ln -s /usr/local/openssl/lib/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
    
    
    1. 检查gcc是否安装 ,如果没有安装执行yum -y install gcc gcc-c++ autoconf make

      虚拟机默认实验sudo yum -y python3是会报错的,因为的库没有。所以我们可以安装epel扩展软件包

      sudo yum -y install epel-release 本文用编译安装所以这里用不上

    [root@hadoop100 bin]# gcc --version
    bash: gcc: command not found...
    

    上面可以看出没有安装,所以必须安装gcc

    sudo yum -y groupinstall "Development Tools"
    sudo yum -y install gcc gcc-c++ autoconf make
    

    查看上面的安装

    yum grouplist
    yum grouplist |grep Development
    yum groupinfo Development Tools
    

    安装完毕检查下是否安装成功:gcc --version

    image.png
    1. 安装依赖包,接下来的操作我们用adeng用户去执行操作。

    安装如下依赖包,复制在xshell上面,shift +insert 粘贴并回车

    sudo yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel libffi-devel gdbm-devel db4-devel libpcap-devel xz-devel make
    
    
    1. 安装python3,.安装python3源码包,python3.10.4系统,mkdir /tmp/softwarebak, cd进入
      wget https://www.python.org/ftp/python/3.10.4/Python-3.10.4.tgz
    [adeng@hadoop100 tmp]$ mkdir /tmp/softwarebak
    [adeng@hadoop100 tmp]$ cd /tmp/softwarebak/
    [adeng@hadoop100 softwarebak]$ wget https://www.python.org/ftp/python/3.10.4/Python-3.10.4.tgz
    
    
    1. 解压

    sudo tar -zxvf Python-3.10.4.tgz 解压在当前softwarebak目录

    如果是老手,可以直接跳到下面这一处 修改 vim /tmp/softwarebak/Python-3.10.4/Modules/Setup ,然后在回到下一步继续。

    # 进入源码目录
    cd Python-3.10.4
    #指定编译语言
    export LANG=zh_CN.UTF-8
    export LANGUAGE=zh_CN.UTF-8
    #指定安装目录
    sudo ./configure --prefix=/usr/local/python3 --with-ssl=/usr/local/openssl 
    或(主要看/usr/local/openssl是否存在)
    #第一个指定安装的路径,不指定的话,安装过程中可能软件所需要的文件复制到其他不同目录,删除软件很不方便,复制软件也不方便.
    
    #第二个是为了安装pip需要用到ssl,后面报错会有提到.
    ./configure --prefix=/usr/local/python3 --with-ssl # 上面同样的效果,推荐使用上面一行命名
    
    #编译安装
    sudo make && sudo make install && sudo make clean
    

    安装完python后,切换到安装的bin目录

    cd /usr/local/python3/bin
    ./python
    import ssl # 发现 ModuleNotFoundError: No module named '_ssl'
    exit()   #退出python3解释器后执行查看./pip3 list
    ./pip3 list
    
    WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
    Could not fetch URL https://pypi.org/simple/pip/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /simple/pip/ (Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available.")) - skipping
    
    如何解决上面的问题
    
    python2 
    import ssl  # python2能正常导入
    exit()
    openssl version # OpenSSL 1.1.1
    

    1):在Python3.7之后的版本,依赖的openssl,必须要是1.1或者1.0.2之后的版本,或者安装了2.6.4之后的libressl,linux自带的openssl版本过低。
    2):在编译之后修改Modules/Setup文件中的部分内容,打开ssl,或者在编译的时候指定–with-ssl参数(我使用的是前面的方式,后一种方式的真实性有待考究)

    修改 vim /tmp/softwarebak/Python-3.10.4/Modules/Setup

    shift+g 跳转到末尾 然后在末尾粘贴如下内容,wq保存退出

    _socket socketmodule.c
    # Socket module helper for SSL support; you must comment out the other
    # socket line above, and possibly edit the SSL variable:
    SSL=/usr/local/openssl
    _ssl _ssl.c \
            -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
            -L$(SSL)/lib -lssl -lcrypto
    
    

    或者如下,最好是有用上面那种粘贴,我是没出错的。

    cat >> /tmp/softwarebak/Python-3.10.4/Modules/Setup <<EOF
    _socket socketmodule.c
    # Socket module helper for SSL support; you must comment out the other
    # socket line above, and possibly edit the SSL variable:
    SSL=/usr/local/openssl
    _ssl _ssl.c \
            -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
            -L$(SSL)/lib -lssl -lcrypto
    EOF
    # 复制执行过后去vim打开 看看格式是不是和粘贴的一样 不是的话需要手动改一下,防止安装不上
    

    接着如下操作

    #进入源码目录
    cd /tmp/softwarebak/Python-3.10.4
    #指定编译语言
    export LANG=zh_CN.UTF-8
    export LANGUAGE=zh_CN.UTF-8
    #指定安装目录
    sudo ./configure --prefix=/usr/local/python3 --with-ssl=/usr/local/openssl 
    #编译安装
    sudo make && sudo make install && sudo make clean
    
    1. 配置环境变量

      #编辑/etc/profile,在尾部添加如下代码:
      echo 'export PATH=$PATH:/usr/local/python3/bin' >> /etc/profile
      
      #使用source命令重新加载/etc/profile
      source /etc/profile
      
      #查看安装的python版本
      python3 --version
      
      # 或者如下
      echo "export PATH=/usr/local/python/bin:$PATH">> ~/.bash_profile
      source ~/.bash_profile
      ~/.bash_profile 只表示当前用户的个人设置,生效后只该用户可用
      
    1. 将 python 进行软连接,将 python 和 pip 设置全局变量

      sudo ln -s /usr/local/python3/bin/python3.10 /usr/bin/python3
      sudo ln -s /usr/local/python3/bin/pip3.10 /usr/bin/pip3
      
      

    升级pip3

    注意是使用“pip3”去升级。

       /usr/local/python3/bin/python3.10 -m pip install --upgrade pip -i https://pypi.douban.com/simple
    或
       pip3 install --upgrade pip -i https://pypi.douban.com/simple
    

    升级pip过后目录会多出来一个pip,也可以做一下软链接也可以不用。我虚拟机/usr/bin下面并没有pip,上面我软链接了一个pip3以后就用这个.

    1. 测试python3 pip3是否成功

      python3 --version
      pip3 list
      

    设置pip源

    第一种:一般用户

    mkdir ~/.pip
    vim ~/.pip/pip.conf
    # 添加如下内容
    [global]
    trusted-host = mirrors.aliyun.com
    index-url = http://mirrors.aliyun.com/pypi/simple/
    
    [list]
    format=columns
    
    

    第2种:全局可使用/etc/pip.conf

    cat > /etc/pip.conf << EOF
    [global]
    trusted-host = mirrors.aliyun.com
    index-url = http://mirrors.aliyun.com/pypi/simple/
    
    [list]
    format=columns
    EOF
    
    1. 有可能会引起 yum 命令不能用,因为python3 安装,导致系统 python2 冲突,得让 python3 和python2 共存

      sudo vim /usr/bin/yum
      sudo vim /usr/libexec/urlgrabber-ext-down
      把文件里面的#!/usr/bin/python 也修改为#! /usr/bin/python2
      

    install_openssl.sh

    # !/usr/bash
    echo "zheng zai anzhuang yilai"
    sudo -S yum -y groupinstall "Development tools" <<EOF
    123456
    EOF
    sudo yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel libffi-devel gdbm-devel db4-devel libpcap-devel xz-devel make
    
    sudo yum install zlib* -y
    sudo yum install -y gcc gcc-c++ python-devel wget
    sudo yum install -y zlib zlib-dev openssl-devel sqlite-devel bzip2-devel libffi libffi-devel gcc gcc-c++
    
    sudo make && sudo make install
    # 3. 下载openssl安装文件
    cd /tmp/softwarebak
    sudo wget https://www.openssl.org/source/openssl-1.1.1k.tar.gz
     
    # 4. 解压安装openssl,并进入openssl的目录
    sudo tar -zxvf openssl-1.1.1k.tar.gz
    sudo cd openssl-1.1.1k
    export LANG=zh_CN.UTF-8
    export LANGUAGE=zh_CN.UTF-8
    
    sudo ./config --prefix=/usr/local/openssl shared zlib 
    sudo make && sudo make install  
    sudo make clean
    
    # 5. 备份当前openssl
    sudo mv /usr/bin/openssl /usr/bin/openssl.bak
    sudo mv /usr/include/openssl /usr/include/openssl.bak 
    
    # 6. 配置使用新版本
    sudo ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
    sudo ln -s /usr/local/openssl/include/openssl /usr/include/openssl
    
    # 7. 更新动态链接库数据并重新加载
    sudo echo /usr/local/openssl/lib >> /etc/ld.so.conf
    sudo ldconfig -v
    
    # 8. 查看是否升级成功
    sudo openssl version
    
    # 9. 如果缺少libssl.s0.1.1
    sudo ln -s /usr/local/openssl/lib/libssl.so.1.1 /usr/lib64/libssl.so.1.1
    sudo ln -s /usr/local/openssl/lib/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
    

    参考文献

    https://cloud.tencent.com/developer/article/1754597

    https://blog.csdn.net/qq_41580613/article/details/119382214

    相关文章

      网友评论

          本文标题:Centos7.9安装python3.10

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