这里以python3为例,python2的解决方案应该也与此类似。
问题
centos服务器,pip install时,安装失败,同时有报错信息:
pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
此时进入到python,尝试import ssl,同样也会出现错误。
原因
这是因为在安装python时没有配置ssl选项,或者是配置了ssl后编译时有报错,但是最后仍然编译出了能正常运行的python执行程序。
解决方法
重新安装python。
步骤一 确认本地openssl版本
因为python配置ssl,要求是openssl1.1.1及以上的版本,首先要确认本地openssl版本是否符合,执行命令
openssl version
如果版本是1.1.1及以上,那就直接进入步骤二。否则需要重新安装openssl。 openssl 官方下载页面:https://www.openssl.org/source/ 这里下载的是当前最新的openssl-1.1.1q。
wget https://www.openssl.org/source/openssl-1.1.1q.tar.gz
tar zxvf openssl-1.1.1q.tar.gz
mkdir /usr/local/openssl
cd openssl-1.1.1q
./config --prefix=/usr/local/openssl
make && make install
有的教程里也会替换/usr/bin/下的openssl,但是这里只是给python编译使用,可以不替换,只要在便宜python时制定openssl的路径即可。安装完后用命令确认一下是否版本为1.1.1
/usr/local/openssl/bin/openssl version
步骤二 编译安装python
python官方下载页面 : https://www.python.org/downloads/
wget https://www.python.org/ftp/python/3.10.7/Python-3.10.7.tgz
tar zxvf Python-3.10.7.tgz
cd Python-3.10.7
mkdir /usr/local/python3
./configure --prefix=/usr/local/python3 --with-openssl=/usr/local/openssl
make && make install
ln -s /usr/local/python3/bin/python3 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
这里也可以单独执行make,看看编译结果里是否有报错,如果有ssl相关报错,说明还是ssl模块编译还是有问题,可以查看编译结果里的原因说明。 之后再执行pip3 install就不会报错了。
参考: 解决pip is configured with locations that require TLS/SSL, however the ssl module in Python is not
|