centos6 pip3 is configured with locations that require TLS/SSL

在centos6.9上使用Python3.8,安装好以后,pip3 install包文件提示了pip is configured with locations that require TLS/SSL。
开始以为是自己的安装有问题,尝试重新安装了下,发现仍然不行,后来查了下百度,看了好多篇误人的文章,最后在两篇文章中发现了自己的解决办法,
https://blog.csdn.net/Crazy_zh/article/details/103378516 linux安装python3.8
https://www.jb51.net/article/147514.htm python3.8无法导入ssl模块解决方法

https://blog.csdn.net/weixin_43249934/article/details/107174806

下面我分析下这次问题产生的原因,并且记录下解决的方法。
首先,从pip3 is configured with locations that require TLS/SSL这个错误提示,可以得出,我们的python3.8是无法使用ssl的,在linux中,ssl就是openssl这个包,我们首先查看下是否有安装openssl

rpm -qa|grep openssl

#openssl-1.0.1e-58.el6_10.x86_64
#openssl-devel-1.0.1e-58.el6_10.x86_64

出现下面2个提示,说明我们的环境都是有的,openssl和openssl-devel都是已经安装了的
那我就不得不怀疑是否是openssl版本过低,无法支持python3.8,我记得至少要centos7以上的版本才可以支持python3.8吧。如果各位不是centos的原因导致的,可以查一下自己python所需要的环境是否安装完善,来解决问题。

在这里我查了下centos的版本,看到我自己的版本是centos6.9的。
然后我查到了上面python3.8无法导入ssl模块的攻略,在这里我确定了问题应该出现在centos能yum的openssl版本,没办法支持python3.8。
但是光使用这个楼主的办法不行,所以又查到了第2个攻略,直到我2个攻略相结合,终于解决了我的问题,下面记录一下解决方法。

1.下载适合的openssl版本,通过wegt.

wget http://www.openssl.org/source/openssl-1.1.1g.tar.gz
#注意这里我下载的是1.1.1的,最新版的,我觉得最新版应该可以支持python3.8
#接下来就是编译,解压,创建链接一些列步骤
tar -zxvf openssl-1.1.1g.tar.gz
cd openssl-1.1.1g
./config --prefix=usr/local/openssl shared zlib
make
make install
ln -s /usr/local/openssl/bin/openssl  /usr/bin/openssl
在这里注意一下,/config  后面的--prefix参数,是指定文件安装位置的,我这里没有安装攻略安装在根目录,而是自己指定了目录。 
ln -s 是用来创建软连接的,将安装包bin/下的连接,导入/usr/bin下,这样你的linux就可以通过指令访问你的安装包了,相当于windows的环境变量。

2.下载python3.8,修改源文件

wget https://www.python.org/ftp/python/3.8.0/Python-3.8.0rc1.tgz
tar -zxvf Python-3.8.0rc1.tgz
cd Python-3.8.0rc1
接下来这步比较重要,这个攻略,直接在修改了源文件,让源文件来指定ssl的位置
cd Modules
vim Setup

centos6 pip3 is configured with locations that require TLS/SSL
这是原来的攻略,在这里我们需要进行修改一下,在SSL = 这里,攻略使用的是匹配ssl相关文件的方式,我们上面已经指定好了连接,所以这里直接写我们的连接就可以

SSL = /usr/bin/openssl

3.接下来仍然是对Python3.8的编译,安装,指定连接环节

返回我们的安装包
cd Python-3.8.0rc1
./configure --prefix=/usr/local/python3  --with-openssl=/usr/bin/openssl
这里另一个攻略的指定参数方法,我也用上了,争取一步到位,懒得再搞了
make
make install
ln -s /usr/local/python3/bin/python3 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3

最后就是测试了,我们pip install我们需要的包,发现不再出现错误提示,更新pip同样不再提示,证明已经解决掉了,python3.8无法连接openssl的问题。