目录
- 背景
- 具体报错
- 检验
- 升级过程
- 步骤一:升级ssl。
- 步骤二:重新编译安装python
背景
换了台服务器按照之前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安装成功了。
