centos7 python3.10.13 安装并配置

# 安装依赖
gcc --versions

# 如果没有,则安装gcc
yum -y install gcc wget

# 安装必要依赖

yum -y install zlib*
yum -y install libffi-devel
yum -y install openssl-devel

# 更新openssl 1.1.1版本以上
yum install  -y gcc gcc-c++ glibc make autoconf pcre-devel  pam-devel pam* zlib* pam* zlib*
wget https://ftp.openssl.org/source/old/1.1.1/openssl-1.1.1w.tar.gz
tar  xf openssl-1.1.1w.tar.gz
cd openssl-1.1.1w/
mkdir /usr/local/openssl
./config --prefix=/usr/local/openssl --shared zlib
make && make install

echo "/usr/local/openssl/lib64" >> /etc/ld.so.conf.d/openssl-1.1.1w.conf
ldconfig -v

\mv /bin/openssl /bin/openssl.bak
\mv /usr/bin/openssl /usr/bin/openssl.bak
\mv /usr/include/openssl /usr/include/openssl.bak 
\mv /usr/local/bin/openssl /usr/local/bin/openssl.bak
\mv /usr/lib64/libssl.so.1.0.2k /usr/lib64/libssl.so.1.0.2k.bak
\mv /usr/lib64/libcrypto.so.1.0.2k /usr/lib64/libcrypto.so.1.0.2k.bak
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/openssl/include/openssl /usr/include/openssl
ln -s /usr/local/openssl/bin/openssl /usr/local/bin/openssl
ln -s /usr/local/openssl/lib64/libcrypto.so.3 /lib/libcrypto.so.3
ln -s /usr/local/openssl/lib64/libcrypto.so.3 /lib/libcrypto.so.6
ln -s /usr/local/openssl/lib64/libssl.so.3  /usr/lib64/libssl.so.3
ln -s /usr/local/openssl/lib64/libcrypto.so.3  /usr/lib64/libcrypto.so.3
ln -s /usr/local/openssl/lib64/libssl.so  /usr/lib64/libssl.so
ln -s /usr/local/openssl/lib64/libcrypto.so  /usr/lib64/libcrypto.so

# echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
echo "/usr/local/openssl/lib64" >> /etc/ld.so.conf
/sbin/ldconfig -v
openssl version

# 或 yum安装
yum install -y openssl11 openssl11-devel
# 删掉已安装python
rm -rf /usr/local/python3
# 替换openssl 为openssl11
sed -i 's/PKG_CONFIG openssl /PKG_CONFIG openssl11 /g' configure

./configure --prefix=/usr/local/python3 && make && make install

# 如果 没有wget,还需安装

yum -y install wget

# 下载 python3
# 以下载python3.10.13为例
# 切换到下载路径

cd ~
wget https://www.python.org/ftp/python/3.10.13/Python-3.10.13.tgz

# 编译安装
tar -zxvf Python-3.10.13.tgz

# 新建一个python3的安装目录(位置可自定义)。

mkdir /usr/local/python3

# 进入下载解压的Python-3.10.13目录下,「指定安装目录,设置启用ssl功能」。

cd ~
cd Python-3.10.13
./configure --prefix=/usr/local/python3 --with-openssl=/usr/local/openssl --with-openssl-rpath=auto 

make && make install

# 创建软连接
# 建立安装包下python3.10到 /usr/bin下python3 及 pip3的连接,以便命令行使用

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

# 删除原来centos7默认的python 到python2.7的连接,重写创建到python的软连接

rm -f /usr/bin/python
ln -s /usr/bin/python3 /usr/bin/python

# python --version
Python 3.10.13
# pip --version
pip 23.0.1 from /usr/local/python3/lib/python3.10/site-packages/pip (python 3.10)

python -m pip install --upgrade pip

# 修改yum
# Linux centos7自带的python版本是2.7,yum使用python2.7作为命令解释器。安装python3后,软连接/usr/bin/python指向的版本是python3,不修改yum的配置,会导致yum使用报错,无法安装包等。

# 「报错信息1:」
# yum
  File "/usr/bin/yum", line 30
    except KeyboardInterrupt, e:
           ^^^^^^^^^^^^^^^^^^^^
SyntaxError: multiple exception types must be parenthesized

# vi /usr/bin/yum
# 修改yum配置文件,下面两个文件都要修改。

vi /usr/bin/yum
vi /usr/libexec/urlgrabber-ext-down
按i进入编辑模式,在第一行
#!/usr/bin/python把修改为#!/usr/bin/python2.7,

mkdir -p ~/.pip
vim ~/.pip/pip.conf

[global]
# 设置默认的软件包安装源为PyPI(Python软件包索引)
index-url = https://mirrors.aliyun.com/pypi/simple/
# 额外的软件包安装源
extra-index-url = https://mirror.baidu.com/pypi/simple/
                  https://mirrors.cloud.tencent.com/pypi/simple/
                  https://mirrors.huaweicloud.com/repository/pypi/simple/
                  https://mirrors.163.com/pypi/simple/
                  https://pypi.doubanio.com/simple/
                  https://pypi.mirrors.ustc.edu.cn/simple/
                  https://pypi.tuna.tsinghua.edu.cn/simple/
# 设置socket超时时间100s(默认为15s)。
timeout = 100
# 关闭pip版本检查
disable-pip-version-check = true

[install]
# 用于指定可信任的主机,以解决一些安全警告。
trusted-host = mirrors.aliyun.com
               mirror.baidu.com
               mirrors.cloud.tencent.com
               mirrors.huaweicloud.com
               mirrors.163.com
               pypi.doubanio.com
               pypi.mirrors.ustc.edu.cn
               pypi.tuna.tsinghua.edu.cn