问题描述
centos7上,存在python2和python3.11。python2下import ssl是可以成功的,而python3下import ssl会报模块缺失错误。
问题定位
由此上述问题描述可以推断: 系统上是存在openssl的包的
可以从两个方向定位这个问题:
- 系统上openssl的版本太低,不适配python3.11
- 交叉编译python3.11源代码时,未成功将openssl链接上
问题解决
-
“系统上openssl的版本太低,不适配python3.11”:
根据网上教程安装了1.1.1的openssl(原先是1.0.2),但还是没有解决问题
-
“交叉编译python3.11源代码时,未成功将openssl链接上”:
首先进行预配置:
$ ./configure --prefix=/usr/local/python311 --with-openssl=/usr/local/openssl-1.1.1u输入此条指令后,发现弹出的configure结果中,仍然显示有"ssl module missing"之类的话,说明仍然没有找到可链接的opnessl包
于是两天时间,几乎查了全网相关的资料,找到了两条指令:
$ export LD_LIBRARY_PATH=/usr/local/openssl/lib:$LD_LIBRARY_PATH(这里的路径要按自己openssl实际安装路径配置)$ LDFLAGS="-L/usr/local/lib -L/usr/local/lib64 -Wl,-rpath,/usr/local/lib -Wl,-rpath,/usr/local/lib64"(这条指令什么都不需要变)具体的使用方法是:
# ./configure --prefix=/usr/local/python311 --with-openssl=/usr/local/openssl-1.1.1u # export LD_LIBRARY_PATH=/usr/local/openssl/lib:$LD_LIBRARY_PATH # LDFLAGS="-L/usr/local/lib -L/usr/local/lib64 -Wl,-rpath,/usr/local/lib -Wl,-rpath,/usr/local/lib64" # make # make install然后使用编译成功的python3便会发现不再缺少ssl、_ssl模块
关于那两条指令的作用实在是不清楚,但好歹也算是解决了问题
关于使用SSL模块报错: CA证书缺失
解决办法: www.jianshu.com/p/ef9c6173f…
已经验证该方法是完整且有效的~