python3.10及以上版本编译安装ssl模块的详细过程
作者:伏逸 发布时间:2022-05-05 07:26:28
前言
由于python3.10之后版本不在支持libressl使用ssl,需要使用openssl安装来解决编译安装python时候遇到的ssl模块导入失败的问题,这里需要用的openssl1.1.1版本或者更高版本
编译安装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
其中:
l -fPIC: 位置无关代码
l --prefix=: 路径 一般选 /usr/include/openssl
l enbale-shared: 动态库
安装openssl3.0.7问题
安装openssl3.0.7时候报错,查看对应文件显示模块缺少,需要加载导入模块
报错原因: 缺少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
退出界面回到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.xzcd 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
>>
来源:https://blog.csdn.net/ye__mo/article/details/129436629
猜你喜欢
- 用Pytorch1.0进行半精度浮点型网络训练需要注意下问题:1、网络要在GPU上跑,模型和输入样本数据都要cuda().half()2、模
- 本文实例讲述了Codeigniter控制器controller继承问题。分享给大家供大家参考,具体如下:在项目中经常用到这样一种情况,后台中
- 姿态检测是计算机视觉领域的一个活跃研究领域。你可以从字面上找到数百篇研究论文和几个试图解决姿势检测问题的模型。之所以有如此多的机器学习爱好者
- 迭代器&生成器在 Python 中,迭代器和生成器都是用来遍历数据集合的工具,可以按需逐个生成或返回数据,从而避免一次性加载整个数据
- 第一个版本在这个版本中,首先创建了 RouterConfig 对象,其构造方法创建了 tornado.web.Application() 并
- 我就废话不多说了,直接上代码吧!#全0和全1矩阵v1 = tf.Variable(tf.zeros([3,3,3]), name="
- 一、需求分析最近同事用网上提供扫描软件进行扫描识别文字,每天上线只能够做两次扫描,请求我研发一个小工具帮助解决识别图片的中文字。二、方案选择
- 本文环境Python 3.6.5Django 2.0.4fix(2018.5.19):最近得知Django 的model基类需要声明为abs
- 本文实例讲述了Python3实现将文件树中所有文件和子目录归档到tar压缩文件的方法。分享给大家供大家参考。具体实现方法如下:# 这里将一个
- 例子一:Python用WMI模块获取windowns系统的硬件信息:硬盘分区、使用情况,内存大小,CPU型号,当前运行的进程,自启动程序及位
- 前言我第一次见到飞机大战是在我小学五年级下半学期的时候(2020年),这个游戏中可以说包含了几乎所有我目前可接触到的pygame知识。一、p
- 代码是在源代码的基础上进行的修改。希望对你有所帮助! 实现后如图所示:首先我们需要抓取一些基础的数据,各大火车站信息!import
- 查看Tensor尺寸及查看数据类型Tensor尺寸查看命令:x.shape例子:input = torch.randn(20,16,50,3
- “高并发和多线程”总是被一起提起,给人感觉两者好像相等,实则 高并发 ≠ 多线程多线程是完成任务的一种方法,高并发是系统运行的一种状态,通过
- 一、前言我们在使用pycharm写代码时可能出现过下面这种情况,不小心点到了ignore ....:这样会导致整个代码都没有错误提示了,类似
- 关于NaN值-在能够使用大型数据集训练学习算法之前,我们通常需要先清理数据, 也就是说,我们需要通过某个方法检测并更正数据中的错误。 - 任
- 酱子们大家好,今天继续分享 Python 小工具今天的小程序,可以一键完成文件整理,一起来看看吧!按照文件格式整理具体来说就是不同的文件后缀
- /* --注意:准备数据(可略过,非常耗时) CREATE TABLE CHECK1_T1 ( ID INT, C1 CHAR(8000)
- 数据库是数据的集合,与数学的集合论有密不可分的关系。为提高查询速度,我们可以:对数据表添加索引,以加快搜索速度;通过编程技巧最大限度地利用索
- print函数的功能是打印图窗或保存为特定文件格式。语法print(filename,formattype)print(filename,f