脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|shell|

服务器之家 - 脚本之家 - Python - python3.10及以上版本编译安装ssl模块

python3.10及以上版本编译安装ssl模块

2023-10-12 14:58伏逸 Python

由于python3.10之后版本不在支持libressl使用ssl,需要使用openssl安装来解决编译安装,python时候遇到的ssl模块导入失败的问题,这里需要用的openssl1.1.1版本或者更高版本

前言
  由于python3.10之后版本不在支持libressl使用ssl,需要使用openssl安装来解决编译安装
python时候遇到的ssl模块导入失败的问题,这里需要用的openssl1.1.1版本或者更高版本

python3.10及以上版本编译安装ssl模块

编译安装openssl
下载地址
参见https://www.openssl.org/,包括以下版本:
https://www.openssl.org/source/openssl-3.1.0-alpha1.tar.gz
https://www.openssl.org/source/openssl-1.1.1s.tar.gz
https://www.openssl.org/source/openssl-3.0.7.tar.gz
编译安装
注:编译之前请先确保系统中安装了make以及gcc的软件包。,编译安装前确认/usr/include/openssl//为空
tar -zxf openssl-1.1.1s.tar.gz
cd openssl-1.1.1s/
./config -fPIC --prefix=/usr/include/openssl enable-shared
make
make install

其中:

 -fPIC: 位置无关代码

 --prefix=: 路径 一般选 /usr/include/openssl

 enbale-shared: 动态库

安装openssl3.0.7问题
  安装openssl3.0.7时候报错,查看对应文件显示模块缺少,需要加载导入模块

python3.10及以上版本编译安装ssl模块

报错原因: 缺少IPC/Cmd.pm模块

解决方法:

安装perl-CPAN

$ yum install -y perl-CPAN

进入CPAN的she模式,首次进入需要配置shel,按照提示操作即可

 $ perl -MCPAN -e shell

在shell中安装缺少的模块,确定是cpan[1]算是进入了操作命令入口

cpan[1]> install IPC/Cmd.pm

python3.10及以上版本编译安装ssl模块

退出界面回到shell

cpan[1]> quit
  安装成功后,重新编译OpenSSL即可
编译安装python3.11.2
下载地址

python下载地址

https://www.python.org/ftp/python/3.11.2/Python-3.11.2.tgz
编译安装

需要修改解压后的python Moudle/Setup文件

tar -xf Python-3.11.2.tar.xz
cd Python-3.11.2/
需要修改解压后的python Moudle/Setup文件
# To statically link OpenSSL:
- # _ssl _ssl.c $(OPENSSL_INCLUDES) $(OPENSSL_LDFLAGS) \
+ _ssl _ssl.c $(OPENSSL_INCLUDES) $(OPENSSL_LDFLAGS) \
- #    -l:libssl.a -Wl,--exclude-libs,libssl.a \
+     -l:libssl.a -Wl,--exclude-libs,libssl.a \
- #    -l:libcrypto.a -Wl,--exclude-libs,libcrypto.a
+     -l:libcrypto.a -Wl,--exclude-libs,libcrypto.a
- # _hashlib _hashopenssl.c $(OPENSSL_INCLUDES) $(OPENSSL_LDFLAGS) \
+ _hashlib _hashopenssl.c $(OPENSSL_INCLUDES) $(OPENSSL_LDFLAGS) \
- #    -l:libcrypto.a -Wl,--exclude-libs,libcrypto.a
+     -l:libcrypto.a -Wl,--exclude-libs,libcrypto.a

编译安装,注意configure命令

此处参考了:configure配置

chmod +x configure
mkdir /usr/local/python-3.11.2
./configure --prefix=/usr/local/python-3.11.2 --with-zlib=/usr/include/ --with-openssl-rpath=auto  --with-openssl=/usr/include/openssl  OPENSSL_LDFLAGS=-L/usr/include/openssl   OPENSSL_LIBS=-l/usr/include/openssl/ssl OPENSSL_INCLUDES=-I/usr/include/openssl
make -j 4
make install
验证是否成功安装ssl模块
/usr/local/python-3.11.2/bin/python3 -V
/usr/local/python-3.11.2/bin/python3 
# 执行下面命令不报错既正常
>>import _ssl
>>

到此这篇关于python3.10及以上版本编译安装ssl模块的文章就介绍到这了,更多相关内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文地址:https://blog.csdn.net/ye__mo/article/details/129436629

延伸 · 阅读

精彩推荐
  • PythonPython实现图像压缩和图像处理详解

    Python实现图像压缩和图像处理详解

    随着现在短视频类越来越火,随之而来的就是大量的视频图像的处理。这篇文章主要为大家介绍了Python如何一键实现图像压缩和图像处理,希望对你们有所...

    五包辣条!7142022-07-08
  • Pythonuwsgi启动django项目的实现步骤

    uwsgi启动django项目的实现步骤

    本文主要介绍了uwsgi启动django项目的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随...

    空中追风sk10562022-08-11
  • Pythonpython根据照片获取地理位置及泄露防御

    python根据照片获取地理位置及泄露防御

    这篇文章主要为大家介绍了python根据照片获取地理位置及泄露防御,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪...

    Sir老王6862022-12-30
  • PythonDjango框架实现分页显示内容的方法详解

    Django框架实现分页显示内容的方法详解

    这篇文章主要介绍了Django框架实现分页显示内容的方法,结合实例形式详细分析了Django框架引入bootstrap样式进行分页显示相关步骤、实现方法与操作注意事项...

    125730905410302021-06-25
  • Python详解python中的变量

    详解python中的变量

    这篇文章主要为大家详细介绍了python的变量,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    Tallbo9122022-03-01
  • PythonPython 实现循环的最快方式(for、while 等速度对比)

    Python 实现循环的最快方式(for、while 等速度对比)

    while 和 for 是 Python 中常用的两种实现循环的关键字,它们的运行效率实际上是有差距的。...

    菜鸟学Python11882021-12-07
  • Python快速入门python学习笔记

    快速入门python学习笔记

    给大家分享一下python的一周快速学习入门的笔记,如果你希望最快速度学习python,这个非常适合你。...

    李卓伦4702020-12-22
  • PythonPython动态导入模块的方法实例分析

    Python动态导入模块的方法实例分析

    这篇文章主要介绍了Python动态导入模块的方法,结合实例形式较为详细的分析了Python动态导入系统模块、自定义模块以及模块列表的相关操作技巧,需要的朋...

    Bigberg10402021-03-10