升级openSSL
Python 2.7 至 Python 3.6 需要 OpenSSL 0.9.8 至 1.0.2 版本。
Python 3.7 支持 OpenSSL 1.0.2 和 1.1.x 系列,但推荐使用 1.1.x。
Python 3.8 及之后的版本 需要 OpenSSL 1.1.1 或更高版本。
# 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 /usr/local/ssl
cd /usr/local/ssl
wget https://www.openssl.org/source/openssl-1.1.1k.tar.gz
# 4. 解压安装openssl,并进入openssl的目录
tar -zxvf openssl-1.1.1k.tar.gz
cd openssl-1.1.1k
export LANG=zh_CN.UTF-8
export LANGUAGE=zh_CN.UTF-8
./config --prefix=/usr/local/ssl/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/ssl/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/ssl/openssl/include/openssl /usr/include/openssl
# 7. 更新动态链接库数据并重新加载
echo /usr/local/ssl/openssl/lib >> /etc/ld.so.conf
ldconfig -v
# 8. 查看是否升级成功
openssl version
# 9. 如果缺少libssl.s0.1.1
ln -s /usr/local/ssl/openssl/lib/libssl.so.1.1 /usr/lib64/libssl.so.1.1
ln -s /usr/local/ssl/openssl/lib/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
安装
1.1 安装依赖
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make libffi-devel
yum install gcc gcc-c++ openssl-devel libffi-devel tk-devel
1.2 下载、解压
3.8
mkdir -p /usr/local/python3
cd /usr/local/python3
wget https://www.python.org/ftp/python/3.8.5/Python-3.8.5.tar.xz
xz -d Python-3.8.5.tar.xz
tar -xvf Python-3.8.5.tar
cd Python-3.8.5
3.10
mkdir -p /usr/local/python3
cd /usr/local/python3
wget https://www.python.org/ftp/python/3.10.9/Python-3.10.9.tar.xz
xz -d Python-3.10.9.tar.xz
tar -xvf Python-3.10.9.tar
cd Python-3.10.9
1.3 授权(谨慎操作)
sudo chmod -R 777 /usr/local/python3/Python-3.8.5
sudo chmod -R 777 /usr/local/python3
1.4 编译安装
3.8
./configure --prefix=/usr/local/python3/Python-3.8.5_build
# 如果您想要一个具有所有稳定优化活动(PGO 等)的发布版本,请运行
./configure --enable-optimizations
make && make install
python3.8 解释器位置,一般是 /usr/local/bin/python3.8
3.10
./configure --prefix=/usr/local/python3/Python-3.10.9_build --with-ssl=/usr/local/ssl/openssl
make && make install
1.5 建立软连接
3.8
# 删除原来的软连接
rm -rf /usr/local/bin/python3.8
rm -rf /usr/local/bin/pip3.8
# 添加python3与pip3的软链接
ln -s /usr/local/python3/Python-3.8.5_build/bin/python3.8 /usr/local/bin/python3.8
ln -s /usr/local/python3/Python-3.8.5_build/bin/pip3.8 /usr/local/bin/pip3.8
3.10
# 删除原来的软连接
rm -rf /usr/local/bin/python10
rm -rf /usr/local/bin/pip10
# 添加新软链接
ln -s /usr/local/python3/Python-3.10.9_build/bin/python3.10 /usr/local/bin/python10
ln -s /usr/local/python3/Python-3.10.9_build/bin/pip3.10 /usr/local/bin/pip10
验证
3.8
python3.8 -V
pip3.8 -V
3.10
python10 -V
pip10 -V
2 报错处理
2.1
WARNING: The directory ‘/home/ubuntu/.cache/pip’ or its parent directory is not owned or is not writable by the current user. The cache has been disabled. Check the permissions and owner of that directory. If executing pip with sudo, you may want sudo’s -H flag
sudo chown -R ubuntu/home/ubuntu/.cache/pip/
sudo chown -R ubuntu/home/ubuntu/.cache/pip/http/
sudo chown -R ubuntu /home/ubuntu/.cache/pip/
sudo chown -R ubuntu /home/ubuntu/.cache/pip/http
sudo find / -name 'lsb_release.py'
sudo cp /usr/share/pyshared/lsb_release.py /usr/local/soft/python3/lib/python3.7/
2.2 Redis _ssl
No module named ‘_ssl’