python3.11出现ssl,_ssl模块缺失问题

1,067 阅读1分钟

问题描述

centos7上,存在python2和python3.11。python2下import ssl是可以成功的,而python3下import ssl会报模块缺失错误。

问题定位

由此上述问题描述可以推断: 系统上是存在openssl的包的

可以从两个方向定位这个问题:

  1. 系统上openssl的版本太低,不适配python3.11
  2. 交叉编译python3.11源代码时,未成功将openssl链接上

问题解决

  1. “系统上openssl的版本太低,不适配python3.11”:

    根据网上教程安装了1.1.1的openssl(原先是1.0.2),但还是没有解决问题

  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模块

    关于那两条指令的作用实在是不清楚,但好歹也算是解决了问题

    image.png

关于使用SSL模块报错: CA证书缺失

解决办法: www.jianshu.com/p/ef9c6173f…

已经验证该方法是完整且有效的~