当前位置: 首页 > article >正文

源码编译安装python3.12没有ssl模块,python3.12 ModuleNotFoundError: No module named ‘_ssl‘

已经编译安装了opensll 3.3
源码编译安装python3.12没有ssl模块,python3.12 ModuleNotFoundError: No module named ‘_ssl’
报错如下:

[root@localhost ~]# python
Python 3.12.5 (main, Sep  9 2024, 10:33:15) [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import ssl;
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/python3.12/lib/python3.12/ssl.py", line 100, in <module>
    import _ssl             # if we can't import it, let the error propagate
    ^^^^^^^^^^^
ModuleNotFoundError: No module named '_ssl'

**重点:**报错最根本的原因是第一次安装openssl的时候,没有指定libdir,必须指定–libdir=lib,不指定默认会把库放到lib64下面的,python3会找不到库,然后报上面的错

网上很多乱七八糟的安装方法,最常见的是./Configure --prefix=/usr/local/openssl/,这样安装出来的是有问题的,安装的时候会把lib放到lib64,这样python3就找不到openssl要用的库了
还有一点要注意:自定义的openssl地址一定要放在/urs/local下,放在其他路径,也是无法找到库的

看一下官网的安装步骤是这样的
在这里插入图片描述
贴一下代码在这里,openssl-VERSION就是你下载的openssl 版本

curl -O https://www.openssl.org/source/openssl-VERSION.tar.gz

tar xzf openssl-VERSION

pushd openssl-VERSION

./config \
    --prefix=/usr/local/custom-openssl \
    --libdir=lib \
    --openssldir=/etc/ssl

make -j1 depend

make -j8

make install

###*********我自己是这样设置参数安装的***************
tar -xvf openssl-3.3.1.tar
cd openssl-3.3.1/
./Configure --prefix=/usr/local/openssl/ --libdir=lib --openssldir=/etc/ssl
make -j 4 && make install

安装完成之后,是这样的(lib64是第一次安装没指定libdir留下的,没删除)
在这里插入图片描述

python3的安装步骤
Build Python with custom OpenSSL (see the configure --with-openssl and --with-openssl-rpath options)

pushd python-3.x.x
./configure -C \
    --with-openssl=/usr/local/custom-openssl \
    --with-openssl-rpath=auto \
    --prefix=/usr/local/python-3.x.x

make -j8

make altinstall
###**********我自己安装**************
tar -xvf Python-3.12.5.tar
cd Python-3.12.5
./configure --prefix=/usr/local/python3.12 --with-openssl=/usr/local/openssl
make -j 4 && make install
###做个软件链接
ln -s /usr/local/python3.12/bin/python3.12 /usr/bin/python3

安装完是这样的
在这里插入图片描述
不影响原来python2的使用
在这里插入图片描述
测试SSL模块

[root@localhost data]# python3
Python 3.12.5 (main, Sep 10 2024, 15:16:07) [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import ssl;
>>> print(ssl.OPENSSL_VERSION);
OpenSSL 3.3.1 4 Jun 2024
>>>
>>> exit()

截图如下
在这里插入图片描述
大功告成!
还是官网靠谱,看了网上别人写的安装方法照着装,结果保存半天找不到原因


http://www.kler.cn/news/305022.html

相关文章:

  • 【H2O2|全栈】关于CSS(2)CSS基础(二)
  • Android 设备的独立环境
  • 在Pycharm中使用GitHub
  • JavaScript 中的异步任务、同步任务、宏任务与微任务
  • Vue3 Day1Day2-Vue3优势ref、reactive函数
  • 基于STM32设计的智能家庭防盗系统(华为云IOT)(224)
  • 速盾:你知道高防 IP 和高防 CDN 的区别吗?
  • 846. 树的重心
  • git-fork操作指南
  • Qt_信号与槽
  • 【洛谷】P9752 [CSP-S 2023] 密码锁
  • C++:opencv生成结构元素用于膨胀腐蚀等cv::getStructuringElement
  • 中级练习[6]:Hive SQL订单配送与用户社交行为分析
  • Windows 环境下安装、使用、nodeJs 连接 TiDB 数据库
  • 使用 Milvus、vLLM 和 Llama 3.1 搭建 RAG 应用
  • 外观模式详解:如何为复杂系统构建简洁的接口
  • UE4_后期处理六—夜视仪、扫描线
  • 瑞芯微RK3568鸿蒙开发板OpenHarmony系统修改cfg文件权限方法
  • 如何提升RAG检索的准确率及答案的完整性?
  • Qt与Udp
  • git update-ref
  • 网络安全 DVWA通关指南 DVWA SQL Injection (Blind SQL盲注)
  • 【iOS】单例模式
  • 使用 PyTorch 构建 MNIST 手写数字识别模型
  • 基于单片机的水情监测站设计
  • TDengine 与飞腾腾锐 D2000 完成兼容互认证,推动国产软硬件深度融合
  • 【方法】如何禁止PDF转换成其他格式文件?
  • Dfa还原某app白盒aes秘钥
  • 微信小程序读写NFC标签(实现NFC标签快速拉起小程序)实战
  • 项目:构建高可用、负载均衡的高效Web服务器