CentOS7下如何让Python3.9正确编译使用OpenSSL1.1.1
解决CentOS7下Python3.9 SSL模块不可用问题
步骤1:定位OpenSSL 1.1.1k的实际安装路径
CentOS7默认自带OpenSSL 1.0.2版本,你手动安装的1.1.1k通常会部署在/usr/local目录下,执行以下命令确认具体路径:
# 查找OpenSSL头文件位置 find / -name "ssl.h" | grep openssl # 查找OpenSSL核心库文件位置 find / -name "libssl.so.1.1"
如果输出类似/usr/local/include/openssl/ssl.h和/usr/local/lib64/libssl.so.1.1,说明OpenSSL 1.1.1k的安装根路径是/usr/local。
步骤2:重新编译Python3.9并指定OpenSSL路径
进入Python3.9.6的源码目录,清理旧编译残留后,重新配置编译参数:
cd /usr/src/Python-3.9.6 # 清理之前的编译文件 make clean # 配置编译参数,替换成你找到的OpenSSL实际路径 ./configure --prefix=/usr/local/python3.9 --with-openssl=/usr/local # 编译并执行altinstall(避免覆盖系统默认Python) make && make altinstall
步骤3:验证SSL模块状态
重新安装完成后,执行以下命令检查Python3.9的SSL模块是否正常加载:
python3.9 -c "import ssl; print(ssl.OPENSSL_VERSION)"
如果输出OpenSSL 1.1.1k ...,说明SSL模块已正常工作,此时再执行python3.9 -m pip install meraki即可完成模块安装。
可选:解决pkg-config找不到openssl11.pc的问题
如果需要通过pkg-config配置编译参数,先找到openssl11.pc文件的位置:
find / -name "openssl11.pc"
假设找到路径为/usr/local/lib64/pkgconfig/openssl11.pc,设置环境变量后再编译:
export PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig:$PKG_CONFIG_PATH export CFLAGS="$CFLAGS $(pkg-config --cflags openssl11)" export LDFLAGS="$LDFLAGS $(pkg-config --libs openssl11)" # 回到Python源码目录重新执行configure、make、make altinstall
内容的提问来源于stack exchange,提问作者python_finn
相关产品推荐
相关产品推荐

