背景
换了台服务器按照之前centos升级python版本升级python正常编译安装成功,但是当使用时又出现了奇怪的报错,估计是机器太老了
具体报错
这个报错也会导致无法pip
安装库
>>> import ssl
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/PythonDir/lib/ssl.py", line 98, in <module>
import _ssl # if we can't import it, let the error propagate
ModuleNotFoundError: No module named '_ssl'
检验
通过命令:openssl version
查看centos
上openssl
版本是1.0
,版本过低,导致失败了
升级过程
步骤一:升级ssl。
-
分别执行以下命令,下载安装包并编译安装
wget https://www.openssl.org/source/openssl-1.1.1d.tar.gz tar -zxvf openssl-1.1.1d.tar.gz cd openssl-1.1.1d ./config --prefix=/usr/local/openssl make && make install
说明:
./config --prefix=/usr/local/openssl
此命令,可以直接./config
,这样默认安装路径就是/usr/local
。建议增加–prefix=/usr/local/openssl
,表示安装路径是在/usr/local/openssl
-
修改链接文件
备份原有链接
mv /usr/bin/openssl /usr/bin/openssl.bak
创建软链接
ln -sf /usr/local/openssl/bin/openssl /usr/bin/openssl
-
添加路径至ld.so.conf
注意:
lib
路径最后不带/
,否则报错echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
-
设置生效
ldconfig -v
-
校验版本
通过openssl version
返回如下OpenSSL 1.1.1d 10 Sep 2019
步骤二:重新编译安装python
前面跟之前centos升级python版本基本一样
-
执行命令清除临时文件:
make clean
-
进行配置:
./configure --prefix=/usr/python3 --with-openssl=/usr/local/openssl --with-openssl-rpath=auto
有2个地方注意:
--prefix=/usr/python3
是python安装路径。详细可看centos升级python版本--with-openssl=/usr/local/openssl
是openssl
安装路径。我上面安装时指明了这个路径
-
执行命令:
make
此时需要注意是否有报错,有报错就是上一步
./configure
配置有问题。make install
-
安装后,执行
python3
后,通过import ssl
没有报错,就证明openssl
安装成功了。