CentOS7下Python3.10.11导入ssl报错:No module named '_ssl'求助
解决CentOS7下Python3.10.11无法import ssl的问题
核心原因
Python3.10要求依赖OpenSSL 1.1.1及以上版本,但CentOS7默认自带的OpenSSL 1.0.2k版本不满足要求,导致编译Python时未生成_ssl模块。
步骤1:升级OpenSSL到1.1.1长期支持版
1.1 安装编译依赖
yum install -y gcc make zlib-devel
1.2 编译安装新版OpenSSL
# 进入源码目录 cd /usr/local/src # 下载OpenSSL 1.1.1w(长期维护版) wget https://www.openssl.org/source/openssl-1.1.1w.tar.gz tar -zxf openssl-1.1.1w.tar.gz cd openssl-1.1.1w # 配置编译参数,指定安装路径并启用动态库 ./config --prefix=/usr/local/openssl shared zlib # 编译并安装 make && make install
1.3 配置系统优先使用新版OpenSSL
# 添加动态库路径 echo "/usr/local/openssl/lib" >> /etc/ld.so.conf.d/openssl.conf ldconfig # 替换系统默认openssl命令 mv /usr/bin/openssl /usr/bin/openssl.old ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
1.4 验证版本
openssl version # 输出应为:OpenSSL 1.1.1w 11 Sep 2023
步骤2:重新编译Python3.10.11
2.1 安装Python编译依赖
yum install -y bzip2-devel expat-devel gdbm-devel ncurses-devel sqlite-devel tk-devel xz-devel readline-devel
2.2 重新编译Python(指定新版OpenSSL路径)
cd /usr/local/src/Python-3.10.11 # 若已下载源码直接进入,未下载则先下载解压 # 清理之前的编译残留 make clean # 配置编译参数,绑定新版OpenSSL ./configure --prefix=/usr/local/python3.10 --with-openssl=/usr/local/openssl --with-openssl-rpath=auto # 编译安装 make && make install
2.3 验证ssl模块
/usr/local/python3.10/bin/python3 -c "import ssl; print(ssl.OPENSSL_VERSION)" # 输出应显示OpenSSL 1.1.1w版本
步骤3:替换系统默认Python3(可选)
如果需要让系统全局的python3指向新版:
mv /usr/bin/python3 /usr/bin/python3.old ln -s /usr/local/python3.10/bin/python3 /usr/bin/python3 ln -s /usr/local/python3.10/bin/pip3 /usr/bin/pip3
注意:不要修改系统默认的python命令(对应Python2),否则会导致yum等系统工具失效。
内容的提问来源于stack exchange,提问作者xemon
相关产品推荐
相关产品推荐

