centos上Python3.10报错 No module named ‘_ssl‘
在搭建web服务器时,需要使用Gunicorn 模块,可在使用Gunicorn 启动时,报错No module named ‘_ssl‘,历经周折解决了这个问题,解决过程记录如下:
说明1:Gunicorn 是一个unix上被广泛使用的高性能的Python WSGI UNIX HTTP Server,和大多数的Web框架兼容,并具有实现简单,轻量级,高性能等特点。
使用gunicorn启动应用程序的好处是,它可以处理大量的并发连接,,并且其使用的是预派生子进程的方式,这意味着它能够更好地利用多核CPU。
步骤一:升级ssl。
通过命令:openssl version查看centos上默openssl版本是1.0,版本过低,导致失败了。升级过程如下
1.分别执行以下命令,下载安装包并编译安装
cd /usr/local
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
2.修改链接文件
备份原有链接
mv /usr/bin/openssl /usr/bin/openssl.bak
创建软链接
ln -sf /usr/local/openssl/bin/openssl /usr/bin/openssl
3.添加路径至ld.so.conf
echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
注意:lib路径最后不带“/”,否则报错
4.设置生效
ldconfig -v
5.这样就安装成功了,可以通过命令 openssl version查看,会显示:
OpenSSL 1.1.1d 10 Sep 2019
步骤二:重新编译安装python。
方法1(强烈推荐):
1.执行命令清除临时文件:make clean
2.进行配置: ./configure --prefix=/usr/python3 --with-openssl=/usr/local/openssl --with-openssl-rpath=auto
有2个地方注意: --prefix=/usr/python3 中=后面是python安装路径。--with-openssl=/usr/local/openssl 中=后面是openssl 安装路径。
3.执行命令:make 。此时需要注意是否有报错,有报错就是上一步 ./configure配置有问题。
4.执行命令:make install 进行安装。
5.安装后,执行python3 后,通过import ssl没有报错,就证明openssl安装成功了。
方法2(仅做记录,未验证):
1.进入python安装包解压后的目录,打开Modules/Setup文件,
找到段代码大概在文件的57%左右的位置,把下面5句代码的注释取消,还有两个地方的路径要修改。一是OPENSSL后面的路径改成你自己的openssl目录,我的是/urs/local/openssl,这里原本是OPENSSL=/path/to/openssl/directory。二是蓝色框里面的要改成lib64,其它的不要动,保存。蓝色框这里的路径,如果不确定的话,可以打开你的openssl目录查看,是lib还是lib64.
说明:Python3的不同版本中,Setup 文件名可能不同,打开后红色框框部分的内容也会不同。
2. 执行命令清除临时文件:make clean
3.执行命令:
./configure --prefix=/usr/python3
make
make install
4.安装后,执行python3 后,通过import ssl没有报错,就证明openssl安装成功了。
参考:https://blog.csdn.net/leonnew/article/details/130886213