一、问题描述:
报错概述:
WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
## 警告:pip配置了需要TLS/SSL的位置,但是Python中的SSL模块不可用。
二、解决方案:
首先要明白python版本需要和openssl的版本需要相对匹配的,在Python3.7之后的版本,依赖的openssl,必须要是1.1或者1.0.2之后的版本,或者安装了2.6.4之后的libressl,linux自带的openssl版本过低。
1、查看liunx系统的openssl版本信息:
openssl version
如图所示:小编的买的liunx服务器自带的openssl版本为1.1.1a ,然而对于小编来说,要安装python3.10的版本来说,openssl的版本太低了,因此需要更新openssl的版本才能满足要求;
先卸载之前安装的旧版本
yum -y remove openssl openssl-devel
2、更新openssl版本:
(1)安装相关依赖
yum install gcc libffi-devel zlib* openssl-devel
yum -y install perl-IPC-Cmd
安装perl-CPAN
[root@centos7 ~]# yum install -y perl-CPAN
进入CPAN的shell模式,首次进入需要配置shell,按照提示操作即可(本人perl小白,全部选择默认配置,高手请根据提示自行选择)
[root@centos7 ~]# perl -MCPAN -e shell
在shell中安装缺少的模块
cpan[1]> install IPC/Cmd.pm
安装成功后,重新编译OpenSSL即可
(2)官网下载openssl版本
wget https://www.openssl.org/source/openssl-3.0.1.tar.gz
(3)解压openssl
tar -zxvf openssl-3.0.1.tar.gz
(4)编译openssl
# 进入解压后的文件目录,切记一定要进入该目录才能继续执行后续命令
cd openssl-3.0.1
其中--prefix是指定安装目录的,shared zlib库是在安装时寻找zlib库依赖的
# 配置(configure)
./config --prefix=/usr/local/openssl
# 编译
make
# 安装
make install
最后重新查看openssl版本
openssl version
#建立新的软链接
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/openssl/include/openssl /usr/include/openssl
#更新动态链接库
echo "/usr/local/openssl/lib64" >> /etc/ld.so.conf
ldconfig -v
ldd /usr/local/openssl/bin/openssl
==========================
2、重新编译python
安装依赖
yum -y update
yum -y install zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel xz xz-devel libffi-devel
(1)官网下载python
wget https://www.python.org/ftp/python/3.10.5/Python-3.10.5.tgz
(2)解压python
tar -xzvf Python-3.10.5.tgz
(3)编译 python
./configure --with-ssl --prefix=/usr/local/python3/
make && make install
4)建立软连接
sudo ln -sf /usr/local/python3/bin/python3.10 /usr/bin/python
sudo ln -sf /usr/local/python3/bin/python3.10 /usr/bin/python3
sudo ln -sf /usr/local/python3/bin/pip3.10 /usr/bin/pip
sudo ln -sf /usr/local/python3/bin/pip3.10 /usr/bin/pip3
报错概述:
WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
## 警告:pip配置了需要TLS/SSL的位置,但是Python中的SSL模块不可用。
二、解决方案:
首先要明白python版本需要和openssl的版本需要相对匹配的,在Python3.7之后的版本,依赖的openssl,必须要是1.1或者1.0.2之后的版本,或者安装了2.6.4之后的libressl,linux自带的openssl版本过低。
1、查看liunx系统的openssl版本信息:
openssl version
如图所示:小编的买的liunx服务器自带的openssl版本为1.1.1a ,然而对于小编来说,要安装python3.10的版本来说,openssl的版本太低了,因此需要更新openssl的版本才能满足要求;
先卸载之前安装的旧版本
yum -y remove openssl openssl-devel
2、更新openssl版本:
(1)安装相关依赖
yum install gcc libffi-devel zlib* openssl-devel
yum -y install perl-IPC-Cmd
安装perl-CPAN
[root@centos7 ~]# yum install -y perl-CPAN
进入CPAN的shell模式,首次进入需要配置shell,按照提示操作即可(本人perl小白,全部选择默认配置,高手请根据提示自行选择)
[root@centos7 ~]# perl -MCPAN -e shell
在shell中安装缺少的模块
cpan[1]> install IPC/Cmd.pm
安装成功后,重新编译OpenSSL即可
(2)官网下载openssl版本
wget https://www.openssl.org/source/openssl-3.0.1.tar.gz
(3)解压openssl
tar -zxvf openssl-3.0.1.tar.gz
(4)编译openssl
# 进入解压后的文件目录,切记一定要进入该目录才能继续执行后续命令
cd openssl-3.0.1
其中--prefix是指定安装目录的,shared zlib库是在安装时寻找zlib库依赖的
# 配置(configure)
./config --prefix=/usr/local/openssl
# 编译
make
# 安装
make install
最后重新查看openssl版本
openssl version
#建立新的软链接
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/openssl/include/openssl /usr/include/openssl
#更新动态链接库
echo "/usr/local/openssl/lib64" >> /etc/ld.so.conf
ldconfig -v
ldd /usr/local/openssl/bin/openssl
==========================
2、重新编译python
安装依赖
yum -y update
yum -y install zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel xz xz-devel libffi-devel
(1)官网下载python
wget https://www.python.org/ftp/python/3.10.5/Python-3.10.5.tgz
(2)解压python
tar -xzvf Python-3.10.5.tgz
(3)编译 python
./configure --with-ssl --prefix=/usr/local/python3/
make && make install
4)建立软连接
sudo ln -sf /usr/local/python3/bin/python3.10 /usr/bin/python
sudo ln -sf /usr/local/python3/bin/python3.10 /usr/bin/python3
sudo ln -sf /usr/local/python3/bin/pip3.10 /usr/bin/pip
sudo ln -sf /usr/local/python3/bin/pip3.10 /usr/bin/pip3